并查集是一种经常用于判断图中是否有环的算法,重点是将连通的分支用树的形式来表示,代码如下:
#include<bits\stdc++.h> using namespace std; const int maxn=100; int parent[maxn]; int edges[maxn][2]; void csh()/*½«ËùÓж¥µãµÄ¸¸½ÚµãÔ¤ÉèΪ-1*/ { for(int i=0;i<maxn;i++) { parent[i]=-1; } } int find_root(int x) { int root_x=x; while(parent[root_x]!=-1) { root_x=parent[root_x]; } return root_x; } /*1-Successed 0-Failed*/ int insert(int x,int y) { int x_root=find_root(x); int y_root=find_root(y); if(x_root==y_root)return 0; else { parent[x_root]=y_root; return 1; } } int main() { int n; while(cin>>n) { csh(); for(int i=0;i<n;i++) { cin>>edges[i][0]>>edges[i][1];/*ÊäÈë±ß*/ } int flag=0; for(int i=0;i<n;i++) { int x=edges[i][0]; int y=edges[i][1]; if(insert(x,y)==0) { flag=1;/*ͼÖÐÓл·*/ break; } } flag==1?cout<<"Yes"<<endl:cout<<"No"<<endl; } }
浙公网安备 33010602011771号