第k短路算法模板
来源:互联网 发布:淘宝买家评价怎么看 编辑:程序博客网 时间:2024/06/06 10:56
int g[1010][1010];
int n, m, x;
const int INF = 0x3f3f3f3f;
int vis[1010];
int dist[1010][20];
int main()
{
while (scanf("%d%d",&n,&m,&x)!=EOF)
{
//初始化
memset(g, 0x3f, sizeof(g));
memset(dist, 0x3f, sizeof(dist));
memset(vis, 0, sizeof(vis));
for (int i = 0; i < m; i++)
{
int p, q, r;
scanf("%d%d%d",&p,&q,&r);
if (r < g[p][q])
{
g[p][q] = r;
}
}
dist[1][0] = 0;
dist[0][0] = INF;
while (1)
{
int k = 0;
for (int i = 1; i <= n; i++)
{
if (vis[i] < x && dist[i][vis[i]] < dist[k][0])
{
k = i;
}
}
if (k == 0)
{
break;
}
if (k == n && vis[n] == x - 1)
{
break;
}
for (int i = 1; i <= n; i++)
{
if (vis[i] < x && dist[k][vis[k]] + g[k][i] < dist[i][x])
{
dist[i][x] = dist[k][vis[k]] + g[k][i];
for (int j = x; j > 0; j--)
{
if (dist[i][j] < dist[i][j - 1])
{
swap(dist[i][j], dist[i][j - 1]);
}
}
}
}
vis[k]++;
}
if (dist[n][x - 1] < INF)
{
printf("%d\n",dist[n][x - 1]);
}
else
{
printf("%d\n",-1);
}
}
return 0;
}
int n, m, x;
const int INF = 0x3f3f3f3f;
int vis[1010];
int dist[1010][20];
int main()
{
while (scanf("%d%d",&n,&m,&x)!=EOF)
{
//初始化
memset(g, 0x3f, sizeof(g));
memset(dist, 0x3f, sizeof(dist));
memset(vis, 0, sizeof(vis));
for (int i = 0; i < m; i++)
{
int p, q, r;
scanf("%d%d%d",&p,&q,&r);
if (r < g[p][q])
{
g[p][q] = r;
}
}
dist[1][0] = 0;
dist[0][0] = INF;
while (1)
{
int k = 0;
for (int i = 1; i <= n; i++)
{
if (vis[i] < x && dist[i][vis[i]] < dist[k][0])
{
k = i;
}
}
if (k == 0)
{
break;
}
if (k == n && vis[n] == x - 1)
{
break;
}
for (int i = 1; i <= n; i++)
{
if (vis[i] < x && dist[k][vis[k]] + g[k][i] < dist[i][x])
{
dist[i][x] = dist[k][vis[k]] + g[k][i];
for (int j = x; j > 0; j--)
{
if (dist[i][j] < dist[i][j - 1])
{
swap(dist[i][j], dist[i][j - 1]);
}
}
}
}
vis[k]++;
}
if (dist[n][x - 1] < INF)
{
printf("%d\n",dist[n][x - 1]);
}
else
{
printf("%d\n",-1);
}
}
return 0;
}
0 0
- 第k短路算法模板
- <A*算法模板>poj 2449 第k短路
- POJ 2449 Remmarguts' Date (第k短路 A*搜索算法模板)
- A*算法—第K短路
- poj2449 第k最短路,A*算法
- 第K短路(A*算法)
- A*算法——第K短路
- A*求单元第k短路的模板
- K短路【模板】
- K短路【模板】
- 【模板】K短路
- 第k短路
- poj2449 第K短路
- 第 k 短路
- pku2449[第k短路]
- 第K短路
- 第K短路
- poj2449(第k短路)
- a+b
- 基于proteus的51单片机仿真实例三十二、C语言的do-while循环语句
- C++ 上机实验(一)【类与对象】
- 类变量,成员变量,局部变量区别
- 基于proteus的51单片机仿真实例三十三、C语言的goto无条件转移语句演示实例
- 第k短路算法模板
- CentOS安装与配置Maven
- 基于proteus的51单片机仿真实例三十四、C语言的break语句
- springMVC-映射处理器(上)
- Qt5.3.1编译QOCI链接oracle
- Solr服务原理(索引)
- node安装node-sass失败,配置淘宝源
- HRMP项目总结
- 基于proteus的51单片机仿真实例三十五、C语言的continue语句