20分只过第五点求调教
查看原帖
20分只过第五点求调教
85055
Galaxy_Ivan楼主2023/9/5 23:05

本地和洛谷在线IDE对于测试数据1输出都是两个Yes.

但是交测评提示有输出No.

测评环境不一样?还是内存这块什么的神奇bug

测试数据点就不发了,容易棕

#include<iostream>
#include<cstdio>
using namespace std;
struct Name
{
	int L=0;
	char N[50];
}name[20005];
int leader[20005];
int Ns, M, T;
void init() {
	for (int i = 0; i < 20005; i++) {
		leader[i] = i;
	}
}
int gotf(int a) {
	if (leader[a] == a)return a;
	leader[a] = gotf(leader[a]);
	return leader[a];
}
void B(int a,int b) {
	leader[gotf(a)] = gotf(b);
}
int IDcheak(Name n) {
	/*cout << "qwq: " << n.L << endl;*/
	for (int i = 1; i <= Ns; i++) {
		if (n.L == name[i].L) {
			bool flag = true;
			for (int j = 0; j <= n.L; j++) {
				/*cout << n.N[j] << " " << name[i].N[j] << endl;*/
				if (n.N[j] != name[i].N[j]) {
					flag = false;
					break;
				}
			}
			if (flag) {
				return i;
			}
		}
	}
	/*cout << "Warming!\n";*/
	return -1;
}
int main() {
	init();
	cin >> Ns >> M; getchar();
	for(int i=1;i<=Ns;i++) {
		char cha = 0;
		while (cha != '\n') {
			cha = getchar();
			name[i].N[name[i].L] = cha;
			name[i].L++;
		}
		name[i].L--;
		name[i].L--;
	}
	Name ls;
	while (M--) {
		ls.L = 0;
		char cha = 0; int ID[2]{};
		while (cha != ' ') {
			cha = getchar();
			ls.N[ls.L] = cha;
			ls.L++;
		}
		ls.L--;
		ls.L--;
		ID[0] = IDcheak(ls);
		cha = 0;
		ls.L = 0;
		while (cha != '\n') {
			cha = getchar();
			ls.N[ls.L] = cha;
			ls.L++;
		}
		ls.L--;
		ls.L--;
		ID[1] = IDcheak(ls);
		/*cout << "\t\tA:" << ls.L << " " << ID[1] << " " ;
		for (int j = 0; j <= ls.L; j++) {
			cout << ls.N[j];
		}cout << endl;*/
		B(ID[0], ID[1]);
	}
	cin >> T; getchar();
	while (T--) {
		ls.L = 0;
		char cha = 0; int ID[2];
		while (cha != ' ') {
			cha = getchar();
			ls.N[ls.L] = cha;
			ls.L++;
		}
		ls.L--;
		ls.L--;
		ID[0] = IDcheak(ls);
		cha = 0;
		ls.L = 0;
		while (cha != '\n' && cha != EOF) {
			cha = getchar();
			ls.N[ls.L] = cha;
			ls.L++;
		}
		ls.L--;
		ls.L--;
		ID[1] = IDcheak(ls);
		if (gotf(ID[0]) == gotf(ID[1])) {
			cout << "Yes.\n";
		}
		else {
			cout << "No.\n";
		}
	}
	return 0;
}
2023/9/5 23:05
加载中...