图的最短路径问题-Floyd算法-07-图4 哈利·波特的考试
2017-05-25 10:44
477 查看
题目
07-图4 哈利·波特的考试 (25分)
分析
这道题就是一个多源有权无向图的最短路径问题,就是求出每个结点的最短路径,并得到其中的最小值。
这儿的结点数比较少(N<=100),所以我们可以采用简单的邻接矩阵表示,并采用Floyd算法来求解。
我的代码
07-图4 哈利·波特的考试 (25分)
分析
这道题就是一个多源有权无向图的最短路径问题,就是求出每个结点的最短路径,并得到其中的最小值。
这儿的结点数比较少(N<=100),所以我们可以采用简单的邻接矩阵表示,并采用Floyd算法来求解。
我的代码
#include<iostream> using namespace std; #define INFINITY 123456 #define MAXN 101 int Graph[MAXN][MAXN]; int dist[MAXN][MAXN]; int N,M; //Floyd算法求最短路径 void Flody() { int k,i,j; for(k=1; k<=N; k++){ for(i=1; i<=N; i++){ for(j=1; j<=N; j++){ if(dist[i][k] + dist[k][j] < dist[i][j]){ dist[i][j] = dist[i][k] + dist[k][j]; } } } } } int main() { #ifndef ONLINE_JUDGE freopen("hali.txt","r",stdin); #endif int i, j, x, y, weight; scanf("%d%d", &N, &M); //初始化图数组 for(i=1; i<=N; i++){ for(j=1; j<=N; j++){ if(i == j) Graph[i][j] = 0; else Graph[i][j] = INFINITY; } } //读取数据 for(i=1; i<=M; i++){ scanf("%d%d%d", &x, &y, &weight); Graph[x][y] = weight; Graph[y][x] = weight; } //初始化距离数组 for(i=1; i<=N; i++){ for(j=1; j<=N; j++){ dist[i][j] = Graph[i][j]; } } Flody(); int minAnimal = -1, minDist = INFINITY; for(i=1; i<=N; i++){ int tmp = 0; for(j=1; j<=N; j++){ if(dist[i][j] > tmp) tmp = dist[i][j]; } if(tmp == INFINITY){ printf("0\n"); return 0; } //printf("%d\n",i); if(tmp < minDist){ minAnimal = i; minDist = tmp; } } printf("%d %d\n", minAnimal, minDist); return 0; }
相关文章推荐
- 07-图4 哈利·波特的考试(最短路径)
- 07-图4 哈利·波特的考试(最短路径)
- PTA--哈利·波特的考试--最短路径--Flord算法
- 5-8 哈利·波特的考试 (最短路径——迪杰斯特拉算法)
- 最短路径问题-Floyd算法
- 最短带权路径问题Dijkstra和Floyd算法
- 6-07. 哈利·波特的考试(25) (Floyd啊 ZJU_PAT )
- C++编程练习(11)----“图的最短路径问题“(Dijkstra算法、Floyd算法)
- 六度空间 地下迷宫探索 哈利·波特的考试 旅游规划 畅通工程之最低成本建设问题
- 07-图4 哈利·波特的考试
- 07-图4 哈利·波特的考试
- pta 07-图4 哈利·波特的考试 (25分) floyd
- Poj 1125 Stockbroker Grapevine(Floyd算法求结点对的最短路径问题)
- 07-图4 哈利·波特的考试
- PTA 07-图4 哈利·波特的考试 (25分)
- 07-图4 哈利·波特的考试
- 浙大计算机研究生复试上机考试2010年----最短路径问题
- Floyd算法解决最短路径问题
- C++编程练习(11)----“图的最短路径问题“(Dijkstra算法、Floyd算法)
- 07-图4 哈利·波特的考试