1 solutions

  • 1
    @ 2025-12-20 19:23:13
    #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