您的位置:首页 > 其它

弗洛伊德

2018-03-13 13:34 176 查看
ccf201712-4,赋权图的变种,没想明白,只写了 弗洛伊德算法,得了30分。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int matrice[520][520];
int path[520][520];
int dis[520];

int main()
{
int n, m;
scanf("%d%d", &n, &m);
int a, b, c, d;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
matrice[i][j] = 200000;
path[i][j] = j;
}
}
for (int i = 1; i <= m; i++)
{
scanf("%d%d%d%d", &a, &b, &c, &d);
matrice[b][c] = d;
matrice[c][b] = d;
dis[b + c] = a;
}
int i, j, k;
for (k = 1; k <= n; k++)
{
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
{
if (matrice[i][j] > matrice[i][k] + matrice[k][j])
{
matrice[i][j] = matrice[i][k] + matrice[k][j];
path[i][j] = path[i][k];
}
}
}
}
//k = path[1]
;
//printf("1\n");
//while (k != n)
//{
//printf("%d\n",k);
//  k = path[k]
;
//}
//printf("%d\n", n);

printf("%d\n", matrice[1]
);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: