数据结构1 - 07-图4 哈利·波特的考试

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define MAXN 101
 4 #define INF 0x3fffffff
 5
 6 int g[MAXN][MAXN],n,m,dist[MAXN],result[MAXN],vis[MAXN];
 7 void read();
 8 void Dijkstra(int s);
 9 int main(){
10     read();
11     int i,j,maxlen=INF,index=-1;
12     memset(result,0,sizeof(result));
13     for(i=1;i<=n;i++){
14         Dijkstra(i);
15         maxlen=0;
16         for(j=1;j<=n;j++){
17             if(dist[j]==INF) {
18                 result[i] = INF;
19                 break;
20             }
21             if(dist[j]>maxlen && dist[j]!=INF) maxlen = dist[j];
22         }
23         if(result[i]!=INF){
24             result[i] = maxlen;
25         }
26     }
27     maxlen = INF;
28     for(i=1;i<=n;i++){
29         if(result[i]!=INF && result[i]<maxlen ){
30             maxlen = result[i];
31             index = i;
32         }
33     }
34     if(index==-1) printf("0\n");
35     else printf("%d %d\n",index,maxlen);
36     return 0;
37 }
38 void read(){
39     scanf("%d %d",&n,&m);
40     int u,v,w,i,j;
41     for(i=1;i<=n;i++)
42       for(j=1;j<=n;j++)
43          g[i][j] = INF;
44
45     for(i=1;i<=m;i++){
46         scanf("%d %d %d",&u,&v,&w);
47         g[u][v] = w;
48         g[v][u] = w;
49
50     }
51 }
52 void Dijkstra(int s){
53     //fill(dist,dist+MAXN,INF);
54     //fill(vis,vis+MAXN,0);
55     for(int i=1;i<=n;i++)
56        dist[i] = INF;
57     for(int i=1;i<=n;i++)
58        vis[i] = 0;
59     int mdata,mindex,i;
60     dist[s] =0;
61     while(1){
62         mdata = INF;
63         mindex = -1;
64         for(i=1;i<=n;i++){
65             if(dist[i]<mdata&&vis[i]==0){
66                 mdata = dist[i];
67                 mindex = i;
68             }
69         }
70         if(mindex==-1) break;
71         vis[mindex] = 1;
72         for(i=1;i<=n;i++){
73             if(vis[i]==0&&g[mindex][i]!=INF&&mindex!=i){
74                 if(dist[mindex]+g[mindex][i]<dist[i]){
75                     dist[i] = dist[mindex] + g[mindex][i];
76                 }
77             }
78         }
79
80     }
81 }

原文地址:https://www.cnblogs.com/Learn-Excel/p/12638204.html

时间: 2024-08-28 21:04:49

数据结构1 - 07-图4 哈利·波特的考试的相关文章

07-图4 哈利&#183;波特的考试

题目: 07-图4 哈利·波特的考试   (25分) 哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫.另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠.老鼠变鱼的魔咒连起来念:hahahehe. 现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物.老师允许他自己带一只动

07-图4 哈利&#183;波特的考试(最短路径)

目的:让最难变的那种动物需要的魔咒最短. 用邻接矩阵,用Floyd算法,记录各个顶点间最短距离. 用WeightType FindMaxDist(WeightType D[][MaxVertexNum], Vertex i,int N); 找到该顶点到其他顶点最难的魔咒 再在这些最难的魔咒里选一个最短的.即让最难变的那种动物需要的魔咒最短.输出该Animal 哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒

07-图4 哈利&#183;波特的考试(25 分)多源最短路,邻接矩阵

哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫.另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠.老鼠变鱼的魔咒连起来念:hahahehe. 现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物.老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事

哈利&#183;波特的考试 java描述

哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫.另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠.老鼠变鱼的魔咒连起来念:hahahehe. 现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物.老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事

6-07. 哈利&#183;波特的考试(25) (ZJU_PAT Floyd)

题目链接:http://www.patest.cn/contests/ds/6-07 哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫.另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠.老鼠变鱼的魔咒连起来念:hahahehe. 现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能

07-图4 哈利&#183;波特的考试 (25 分)

哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫.另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠.老鼠变鱼的魔咒连起来念:hahahehe. 现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物.老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事

07-图4 哈利&#183;波特的考试 (25 分)

哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫.另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠.老鼠变鱼的魔咒连起来念:hahahehe. 现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物.老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事

PTA 07-图4 哈利&#183;波特的考试 (25分)

/* 1.用floyd 求多源最短路径~ 2.找出节点k到其他节点的最短路径的最大值 MAX[k]. 3 在找出MAX数组中最小的即为所求~~ 如果最小值为INF~~~ 说明图不连通! 输出0 */ #include "iostream" using namespace std; #define INF 101 int map[101][101]; void floyd(int v) { int i, j, k; for(k=1;k<=v;k++) for(i=1;i<=v

数据结构快速回顾——图的遍历

图的遍历指的是从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次.图的遍历操作和树的遍历操作功能相似.图的遍历是图的一种基本操作,图的许多其它操作都是建立在遍历操作的基础之上. 图的遍历方法目前有深度优先搜索法和广度(宽度)优先搜索法两种算法. 深度优先搜索法DFS 深度优先搜索法的基本思想是:从图G的某个顶点v0出发,访问v0,然后选择一个与v0相邻且没被访问过的顶点vi访问,再从vi出发选择一个与vi相邻且未被访问的顶点vj进行访问,依次继续.如果当前被访问过的顶点的所有邻接顶点都已