求助,不知道哪里错了
查看原帖
求助,不知道哪里错了
1468
克尔苏加德楼主2022/9/12 13:52
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

#define unsigned LL long long

using namespace std;

string s;
int n;
int map[200][200];
int d[200];

int read(){
	char c = getchar();
	int n = 0;
	while(c < '0' || c > '9') c = getchar();
	while(c >= '0' && c <= '9'){
		n = (n << 1) + (n << 3) + (c & 15);
		c = getchar();
	}
	return n;
}

void Euler(int k){
	for(int i = 65; i <= 122; i ++)
		if(map[k][i]){
			map[k][i] = map[i][k] = 0;
			Euler(i);
		}
	s = char(k) + s;
}

void no(){
	cout<<"No Solution";
	exit(0);
}

int main(){
	n = read();
	memset(d,0,sizeof(d));
	memset(map,0,sizeof(map));
	for(int i = 1; i <= n; i ++){
		char a = getchar(),b = getchar(),c = getchar();
		map[a][b] = 1;
		map[b][a] = 1;
		d[a] ++;
		d[b] ++;
	}
	int num = 0;
	for(int i = 65; i <= 122; i ++)
		if(d[i] % 2 != 0) num ++;
	if(num != 0 && num != 2) no();
	int i;
	for(i = 65; i <= 122; i ++)
		if((num == 0 && d[i] != 0) || (num == 2 && d[i] == 1)) break;
	Euler(i);
	cout<<s;
	return 0;
}
2022/9/12 13:52
加载中...