比赛 2025.3.18 评测结果 AAAAAAAAAA
题目名称 奇偶性游戏 最终得分 100
用户昵称 dream 运行时间 0.049 s
代码语言 C++ 内存使用 3.58 MiB
提交时间 2025-03-18 21:18:30
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int M=20010;
unordered_map<int,int>mp;
int f[2*M];
int cnt,m;
int res;
int lsh(int x){
	if(!mp.count(x)){
		mp[x]=++cnt;
	}
	return mp[x];
}
int find(int x){
	if(f[x]==x)return x;
	else return f[x]=find(f[x]);
}
int main(){
	freopen("parity.in","r",stdin);
	freopen("parity.out","w",stdout);
	ios::sync_with_stdio(0);
	for(int i=0;i<2*M;i++){
		f[i]=i;
	}
	cin>>cnt;
	cnt=-1;
	cin>>m;
	for(int i=1;i<=m;i++){
		int x,y;
		string s;
		cin>>x>>y>>s;
		x=lsh(x-1);
		y=lsh(y);
		int x_o=x,y_o=y,x_e=x+M,y_e=y+M;
		if(s=="odd"){
//			cout<<"o";
			if(find(x_o)==find(y_o)){
				res=i-1;
				break;
			}
			else{
				f[find(x_o)]=find(y_e);
				f[find(x_e)]=find(y_o);
			}
		}
		else{
//			cout<<"e";
			if(find(x_o)==find(y_e)){
				res=i-1;
				break;
			}
			else{
				f[find(x_o)]=find(y_o);
				f[find(x_e)]=find(y_e);
			}			
		}
	}
	if(res)cout<<res;
	else{
		cout<<m;
	}
	return 0;
}