uva 567(最短路径)
2014-11-04 19:54
281 查看
题意:有20个城镇,然后给出了城镇之间的连通情况,要求输出从给出的起点到终点之间最少经过多少个城镇。
题解:最短路径问题,把每个城镇之间的距离当做1,经过的城镇数量就可以根据计算最短路径得出。用的floyd算法。
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int N = 25;
const int INF = 0x3f3f3f3f;
int que, t = 1, g
, num
;
void floyd() {
for (int k = 1; k <= 20; k++)
for (int i = 1; i <= 20; i++)
for (int j = 1; j <= 20; j++)
if (g[i][j] > g[i][k] + g[k][j]) {
g[i][j] = g[i][k] + g[k][j];
}
}
int main() {
while (scanf("%d", &num[1]) != EOF) {
int a;
memset(g, INF, sizeof(g));
for (int i = 1; i <= num[1]; i++) {
scanf("%d", &a);
g[1][a] = g[a][1] = 1;
}
for (int i = 2; i < 20; i++) {
scanf("%d", &num[i]);
for (int j = 1; j <= num[i]; j++) {
scanf("%d", &a);
g[i][a] = g[a][i] = 1;
}
}
floyd();
scanf("%d", &que);
printf("Test Set #%d\n", t++);
int sta, end;
while (que--) {
scanf("%d%d", &sta, &end);
printf("%2d to %2d: %d\n", sta, end, g[sta][end]);
}
printf("\n");
}
return 0;
}
题解:最短路径问题,把每个城镇之间的距离当做1,经过的城镇数量就可以根据计算最短路径得出。用的floyd算法。
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int N = 25;
const int INF = 0x3f3f3f3f;
int que, t = 1, g
, num
;
void floyd() {
for (int k = 1; k <= 20; k++)
for (int i = 1; i <= 20; i++)
for (int j = 1; j <= 20; j++)
if (g[i][j] > g[i][k] + g[k][j]) {
g[i][j] = g[i][k] + g[k][j];
}
}
int main() {
while (scanf("%d", &num[1]) != EOF) {
int a;
memset(g, INF, sizeof(g));
for (int i = 1; i <= num[1]; i++) {
scanf("%d", &a);
g[1][a] = g[a][1] = 1;
}
for (int i = 2; i < 20; i++) {
scanf("%d", &num[i]);
for (int j = 1; j <= num[i]; j++) {
scanf("%d", &a);
g[i][a] = g[a][i] = 1;
}
}
floyd();
scanf("%d", &que);
printf("Test Set #%d\n", t++);
int sta, end;
while (que--) {
scanf("%d%d", &sta, &end);
printf("%2d to %2d: %d\n", sta, end, g[sta][end]);
}
printf("\n");
}
return 0;
}
相关文章推荐
- POJ-2662-A Walk Through the Forest;UVA-10917 - Walk Through the Forest(最短路径)
- uva11374迪杰斯特拉最短路径+打印
- uva 10099(最短路径)
- Uva 11090 最短路径
- uva10986 堆优化单源最短路径(pas)
- uva 11374 Dijkstra (单源最短路径)
- UVA - 216 Getting in Line (求最短路径)
- uva 563 Crimewave 最短路径
- uva 558(最短路径)
- UVA 11883 Repairing a Road(最短路径+暴力枚举)
- uva 10985(最短路径)
- UVA10048 Floyd最短路径
- POJ 2235 Frogger / UVA 534 Frogger /ZOJ 1942 Frogger(图论,最短路径)
- UVa10246 - Asterix and Obelix(最短路径变形)
- uva117 最短路径
- uva 11478 最短路径问题(负环,差分约束系统)
- uva 10269(最短路径)
- Uva 429 Word Transformation ( 最短路径 )
- The Postal Worker Rings Once(UVA 117)最短路径—SPFA算法+邻接表
- uva 10801(最短路径)