# 題目
AP325 Q-7-8. 小寶的著色問題
# 解題思路
O(n+m)
# 程式碼
#include<bits/stdc++.h> | |
using namespace std; | |
#define N 10005 | |
int t,n,m,color[N]; | |
vector<int> adj[N]; | |
bool c; | |
void dfs(int p){ | |
for(auto e:adj[p]){ | |
if(color[e]==0){ | |
if(color[p]==1) color[e]=2; | |
else color[e]=1; | |
dfs(e); | |
}else if(color[e]==color[p]){ | |
c=1; | |
return; | |
} | |
} | |
} | |
signed main(){ | |
ios::sync_with_stdio(0); | |
cin.tie(0); | |
cin>>t; | |
while(t--){ | |
cin>>n>>m; | |
c=0; | |
memset(color,0,sizeof(color)); | |
for(int i=0,u,v;i<m;i++){ | |
cin>>u>>v; | |
adj[u].push_back(v); | |
adj[v].push_back(u); | |
} | |
int i; | |
for(i=0;i<n;i++){ | |
if(color[i]==0) | |
dfs(i); | |
if(c) break; | |
} | |
if(c) cout<<"no\n"; | |
else cout<<"yes\n"; | |
for(i=0;i<n;i++) adj[i].clear(); | |
} | |
} |