#include <stdio.h> #include <string.h> int flag =0; int fa[5000]; int find(int x){ return fa[x]==x?x:(fa[x]=find(fa[x])); } void init(int n){ for(int i=1;i<=n;i++){ fa[i]=i; } } void merge(int x,int y,int fa[]){ fa[find(x)]=find(y); } void fidF(int a,int b,int fa[]){ if(fa[b]==a){ flag= 0; return; } else if(fa[b]==b){ flag=1; return; } fidF(a,fa[b],fa); } int main(int argc, char *argv[]) { int n,m; while(scanf("%d %d",&n,&m)!=EOF){ init(n); flag =0; for(int i=0;i<m;i++){ int a,b; scanf("%d %d",&a,&b); if(a==b){ flag=1; }else { fidF(a,b,fa); if(flag==1){ merge(a,b,fa); } else { printf("ERROR\n"); break; } } } if(flag==1){ printf("RIGHT\n"); } } return 0; } |
Double click to view unformatted code.