1227. Rally Championship

1227

题意木看懂 是可以停在路上 任何地方 

水题一枚 以下条件之一满足就可以

有环(并查集判)

重边

自己到自己的边

最长边大于s(用flod改写下)

 1 #include <iostream>

 2 #include<cstdio>

 3 #include<cstring>

 4 #include<algorithm>

 5 #include<stdlib.h>

 6 #include<vector>

 7 using namespace std;

 8 #define LL long long

 9 int m,n,s,f[110];

10 int w[110][110];

11 int find(int x)

12 {

13     if(x!=f[x])

14     f[x] = find(f[x]);

15     return f[x];

16 }

17 int main()

18 {

19     int i,flag=0,j,k;

20     scanf("%d%d%d",&n,&m,&s);

21     for(i = 1; i <= n ; i++)

22     {

23         f[i] = i;

24     }

25     int maxz = 0;

26     for(i = 1; i <= m ; i++)

27     {

28         int u,v,c;

29         scanf("%d%d%d",&u,&v,&c);

30         maxz = max(maxz,c);

31         if(w[u][v])

32         flag = 1;

33         if(u==v)

34         flag = 1;

35         w[u][v] = c;

36         w[v][u] = c;

37         int tx = find(u),ty = find(v);

38         if(tx == ty)

39         {

40             flag = 1;

41         }

42         else

43         f[tx] = ty;

44     }

45     if(flag)

46     {

47         printf("YES\n");

48         return 0;

49     }

50 

51     for(i = 1; i <= n ; i++)

52         for(j = 1; j <= n ; j++)

53             for(k = 1; k <= n ; k++)

54             if(j!=k&&j!=i&&i!=k&&w[j][k]==0&&w[j][i]&&w[i][k])

55             {

56                 w[j][k] = w[j][i]+w[i][k];

57                 maxz = max(maxz,w[j][k]);

58             }

59     if(maxz>=s)

60     printf("YES\n");

61     else

62     printf("NO\n");

63     return 0;

64 }
View Code

 

你可能感兴趣的:(IO)