1 solutions
-
1
#include<bits/stdc++.h> using namespace std; const int N=20010,B=N/2; int n,m,p[N]; map<int,int>sc; int get(int s) { if(!sc.count(s)) { sc[s]=++n; } return sc[s]; } int find(int x) { if(x!=p[x]) { p[x]=find(p[x]); } return p[x]; } int main() { cin>>n>>m; n=0; for(int i=0;i<N;i++) { p[i]=i; } int res=m; for(int i=0;i<m;i++) { int a,b; string t; cin>>a>>b>>t; a=get(a-1),b=get(b); if(t=="even") { if(find(a+B)==find(b)) { res=i; break; } p[find(a)]=find(b); p[find(a+B)]=find(b+B); } else { if(find(a)==find(b)) { res=i; break; } p[find(a+B)]=find(b); p[find(a)]=find(b+B); } } cout<<res; return 0; }
Information
- ID
- 271
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 7
- Tags
- # Submissions
- 3
- Accepted
- 3
- Uploaded By