1227. Rally Championship

时间:2021-03-20 08:15:26

1227

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

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

有环(并查集判)

重边

自己到自己的边

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

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
using namespace std;
#define LL long long
int m,n,s,f[];
int w[][];
int find(int x)
{
if(x!=f[x])
f[x] = find(f[x]);
return f[x];
}
int main()
{
int i,flag=,j,k;
scanf("%d%d%d",&n,&m,&s);
for(i = ; i <= n ; i++)
{
f[i] = i;
}
int maxz = ;
for(i = ; i <= m ; i++)
{
int u,v,c;
scanf("%d%d%d",&u,&v,&c);
maxz = max(maxz,c);
if(w[u][v])
flag = ;
if(u==v)
flag = ;
w[u][v] = c;
w[v][u] = c;
int tx = find(u),ty = find(v);
if(tx == ty)
{
flag = ;
}
else
f[tx] = ty;
}
if(flag)
{
printf("YES\n");
return ;
} for(i = ; i <= n ; i++)
for(j = ; j <= n ; j++)
for(k = ; k <= n ; k++)
if(j!=k&&j!=i&&i!=k&&w[j][k]==&&w[j][i]&&w[i][k])
{
w[j][k] = w[j][i]+w[i][k];
maxz = max(maxz,w[j][k]);
}
if(maxz>=s)
printf("YES\n");
else
printf("NO\n");
return ;
}