- 博客(3)
- 资源 (7)
- 收藏
- 关注
贪心,图论,动态规划,等算法学习
Language:C++ Result:Accepted
1#include"stdio.h"
2int a[101][101];
3int i,j,k=0;
4int min;
5int max[101];
6int T;
7int n,m,temp,to;
8int flag;
9void main()
10{
11while(scanf("%d",&n)&&n!=0) //读入一个set的人数
12{
13 for(i=1;i<=n;i++)
14 for(j=1;j<=n;j++)
15 a[i][j]=32767;
16 for(i=1;i<=n;i++)
17 a[i][i]=0; //初识化该set的矩阵
18 for(i=1;i<=n;i++) //读入一个set的数据
19 {
20 scanf("%d",&m);
21 for(j=1;j<=m;j++)
22 {
23 scanf("%d %d",&to,&temp);
24 a[i][to]=temp;
25 }
26 }
27 for(k=1;k<=n;k++) //弗洛伊德算法
28 for(i=1;i<=n;i++)
29 for(j=1;j<=n;j++)
30 {
31 if(a[i][k]!=32767 && a[k][j]!=32767 && a[i][j]>a[i][k]+a[k][j])
32 a[i][j]=a[i][k]+a[k][j];
33 }
34
35
36 flag=0;
37 for(i=1;i<=n;i++) //求出从i人开始,谣言传递需要的时间
38 { max[i]=0;
39 for(j=1;j<=n;j++)
40 {
41 if(max[i]<a[i][j])max[i]=a[i][j];
42 }
43
44 }
45
46 min=32767; //计算最小谣言时间
47 for(i=1;i<=n;i++)
48 if(min>max[i])
49 {min=max[i];
50 k=i;
51 }
52 if(min==32767)printf("disjoint.\n");
53 else printf("%d %d\n",k,min);
54
55
56}
57
2009-08-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人