70pts(悬关)
查看原帖
70pts(悬关)
529017
Smg18楼主2023/4/29 14:45
#include<bits/stdc++.h>
#define ll long long
#define Test ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N=5*1e5+10,NN=1e4+10;
ll n,m,k,len,T;
ll minn=INT_MAX,maxn=0;
char c[N];
ll arr[N],f[N],deg[N];
map <string,int> vis;
int kk(string s){
	if(vis[s])return vis[s];
	vis[s]=++n;
	return n;
}
bool find(int x){
	if(f[x]==x)return x;
	return f[x]=find(f[x]);
}
bool un(int a,int b){
	int x=find(a),y=find(b);
	if(x==y){
		return 0;
	}
	f[x]=y;
	return 1;
}
bool ch(){
	string c;
	int x;int y,cnt=0;
	while(cin>>c){
		x=kk(c);
		cin>>c;
		y=kk(c);
		deg[x]++,deg[y]++;
		if(un(x,y))++cnt;
	}
	if(cnt<n-1){
		return 0;
	}
	cnt=0;
	for(int i = 1;i<=n;i++){
		if((deg[i]&1)&&++cnt>2)return 0;
	}
	return 1;
}
int main(){
	Test;
	for(int i =  1;i<=N;i++){
		f[i]=i;
	}
	cout<<(ch()?"Possible":"Impossible");
	
	return 0;
}


错#5,#6,#9点

找出错误原因(不需要给出别的直接AC代码)如果在我的基础上改的话欢迎

2023/4/29 14:45
加载中...