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

 

posted @ 2013-10-15 12:14  _雨  阅读(196)  评论(0)    收藏  举报