Stockbroker Grapevine

http://poj.org/problem?id=1125

 1 #include<cstdio>

 2 #include<cstring>

 3 #include<cmath>

 4 #include<algorithm>

 5 #define MAXN 110

 6 using namespace std;

 7 const int INF=1<<28;

 8 int dis[MAXN][MAXN];

 9 int n,t,a,b;

10 void inti()

11 {

12     for(int i=1; i<=n; i++)

13     {

14         for(int j=1; j<=n; j++)

15         {

16             dis[i][j]=dis[j][i]=INF;

17         }

18     }

19 }

20 int main()

21 {

22     while(scanf("%d",&n)&&n)

23     {

24         inti();

25         for(int i=1; i<=n; i++)

26         {

27             scanf("%d",&t);

28             while(t--)

29             {

30                 scanf("%d%d",&a,&b);

31                 dis[i][a]=b;

32             }

33         }

34         for(int k=1; k<=n; k++)

35         {

36             for(int i=1; i<=n; i++)

37             {

38                 for(int j=1; j<=n; j++)

39                 {

40                     dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);

41                 }

42             }

43         }

44         int cc,tt=-1,mark=1;

45         for(int i=1; i<=n; i++)

46         {

47             int t=-1,c;

48             bool flag=true;

49             for(int j=1; j<=n; j++)

50             {

51                 if(i!=j)

52                 {

53                     if(dis[i][j]==INF)

54                     {

55                         flag=false;

56                         break;

57                     }

58                     else if(dis[i][j]>t)

59                     {

60                         c=i;

61                         t=dis[i][j];

62                     }

63                 }

64                 else continue;

65             }

66             if(flag)

67             {

68                 if(mark)

69                 {

70                     cc=c;

71                     tt=t;

72                     mark=0;

73                 }

74                 else if(t<tt)

75                 {

76                     cc=c;

77                     tt=t;

78                 }

79             }

80         }

81         if(tt==-1) printf("disjoint\n");

82         else printf("%d %d\n",cc,tt);

83     }

84     return 0;

85 }
View Code

 

你可能感兴趣的:(broker)