1.C 题:
1.思路: N=M&每个点读数为2 ,但图中有可能出现多环,需要判断所有点是否都在同一连通块上,有俩种解法:搜索,循环
2.代码(循环做法)
cpp
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
vector<int> g[N];
int n,m,a,b,vis[N];
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
}
for(int i=1;i<=n;i++){
if(g[i].size()!=2) {
cout<<"No"<<endl;
return 0;
}
}
int x=g[1][0],cnt=1;
vis[1]=1;
while(!vis[x]){
vis[x]=1;
cnt++;
if(!vis[g[x][0]]) x=g[x][0];
else x=g[x][1];
}
if(cnt==n)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}