P5937 只有 60 分求助QwQ
查看原帖
P5937 只有 60 分求助QwQ
308107
Xu__楼主2021/7/10 15:44

代码如下,6,8,9,10四个点不过qwq

#include<bits/stdc++.h>
using namespace std;

unordered_map <int, int> Fa, dis;

struct Node
{
	int x, y, ans;
	string s;
};

unordered_map <int, Node> A;


int n, m;

void Merge(int, int, int);
int Get(int);
	

int main()
{
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= m; i++)
	{
		scanf("%d%d", &A[i].x, &A[i].y);
		Fa[A[i].x] = A[i].x, Fa[A[i].y] = A[i].y;
		cin >> A[i].s;
		if (A[i].s == "odd") A[i].ans = 1;
		else A[i].ans = 0;
	}
	for (int i = 1; i <= m; i++)
	{
		int x = A[i].x - 1, y = A[i].y;
		// cout << Get(x) << " " << Get(y) << endl;
		if (Get(x) == Get(y))
		{
			
			if (dis[x] ^ dis[y] != A[i].ans)
			{
				
				printf("%d", i - 1);
				return 0;
			}
		}
		else Merge(x, y, A[i].ans);
	}
	printf("%d", m);
	return 0;
}

int Get(int x)
{
	if (Fa[x] == x) return x;
	int Root = Get(Fa[x]);
	dis[x] ^= dis[Fa[x]];
	return Fa[x] = Root;
}

void Merge(int x, int y, int ans)
{
	int p = Get(x), q = Get(y);
	Fa[p] = q;
	dis[p] = dis[x] xor dis[y] xor ans;
}


2021/7/10 15:44
加载中...