#include<bits/stdc++.h>
#define endl '\n'
#define INF 0x3f3f3f3f
#define ll long long
using namespace std;
typedef pair<int,int> PII;
const int N=100010;
int p[N];
bool vis[N];
int m,cnt;
bool flag;
void init()
{
cnt=0;
flag=true;
for(int i=0;i<=100000;i++)
{
vis[i]=false;
p[i]=i;
}
}
int find(int x)
{
if(p[x]!=x)p[x]=find(p[x]);
return p[x];
}
void solve()
{
init();
for(int i=0;i<m;i++)
{
int a,b;
cin>>a>>b;
vis[a]=vis[b]=true;
a=find(a),b=find(b);
if(a!=b)
{
p[a]=b;
}
else//如果两个结点已经在一个连通块中说明这两个结点至少有两条通路
{
flag=false;
}
}
for(int i=1;i<=100000;i++)//判断连通分量个数,如果大于1则此图不为连通图
{
if(vis[i]&&p[i]==i)
{
cnt++;
}
if(cnt>1)
{
flag=false;
break;
}
}
if(flag)
cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
int main()
{
while(cin>>m)
{
solve();
}
return 0;
}
C - 小鑫的城堡
最新推荐文章于 2024-09-26 22:55:54 发布