pku1703.cpp

来自「这是ACM 方面的资料 是PKU的 北京大学的出来的」· C++ 代码 · 共 76 行

CPP
76
字号
#include <stdio.h>
#define TheMax 100010
int p[TheMax];
int s[TheMax];
int m, n;

void init()
{
	int i;
	for (i = 0; i <= n; i++)
	{
		p[i] = i;
		s[i] = 1;
	}
}

int Get_ID(int x)
{
	int root;
	if (x == p[x])
	{
		return x;
	}
	root = Get_ID(p[x]);
	s[x] = (s[x] + s[p[x]] + 1) % 2;
	p[x] = root;
	return root;
}

void Insert(int a, int b)
{
	int rb;
	rb = Get_ID(b);
	p[rb] = Get_ID(a);
	s[rb] = (s[a] + s[b]) % 2;
}

int main()
{
	char ch[3];
	int a, b, T;
	scanf("%d", &T);
	while (T--)
	{
		scanf("%d %d", &n, &m);
		init();
		while (m--)
		{
			scanf("%s %d %d", ch, &a, &b);

			if (ch[0] == 'D')
			{
				Insert(a, b);
			}
			else
			{
				if (Get_ID(a) == Get_ID(b))
				{
					if (s[a] == s[b])
					{
						printf("In the same gang.\n");
					}
					else
					{
						printf("In different gangs.\n");
					}
				}
				else
				{
					printf("Not sure yet.\n");
				}
			}
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?