社区讨论

WA#3求条玄关

P14807[CCPC 2024 哈尔滨站] 欢迎加入线上会议!参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mkhznm53
此快照首次捕获于
2026/01/17 15:31
2 个月前
此快照最后确认于
2026/01/19 23:55
2 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5+100;
bool vist[maxn],vis[maxn];
int hd[maxn],ans;
struct Edge{
	int to,nxt;
}e[maxn];
int idx,ccc;
void add(int a,int b){
	e[++idx].nxt = hd[a];
	e[idx].to = b;
	hd[a] = idx;
}
void dfs(int cur,int fa){
	vist[cur] = 1;
	ans++;
	if(vis[cur])return ;
	int cnt = 0;
	for(int i = hd[cur];i;i = e[i].nxt){
		int nxt = e[i].to;
		if(nxt == fa || vist[nxt])continue;
		dfs(nxt,cur);
		cnt++;
	}
	if(cnt)ccc++;
	return ;
}
void ddd(int cur,int fa){
	vist[cur] = 1;
	if(vis[cur])return ;
	cout<<cur<<" ";
	int ttt = 0;
	for(int i = hd[cur];i;i = e[i].nxt){
		int nxt = e[i].to;
		if(nxt == fa || vist[nxt])continue;
		ttt++;
	}	
	cout<<ttt<<" ";
	for(int i = hd[cur];i;i = e[i].nxt){
		int nxt = e[i].to;
		if(nxt == fa || vist[nxt])continue;
		cout<<nxt<<" ";
	}
	cout<<'\n';
	for(int i = hd[cur];i;i = e[i].nxt){
		int nxt = e[i].to;
		if(nxt == fa || vist[nxt])continue;
		ddd(nxt,cur);
	}
	return ;
}
int main(){
	int n,m,k,a,b;
	cin>>n>>m>>k;
	for(int i = 1;i<=k;i++){
		cin>>a;
		vis[a] = 1;
	}
	for(int i = 1;i<=m;i++){
		cin>>a>>b;
		add(a,b);
		add(b,a);
	}	
	for(int i = 1;i<=n;i++){
		if(!vis[i]){
			ccc = 0;
			dfs(i,0);
			if(ans == n){
				cout<<"Yes\n";
				cout<<ccc<<'\n';
				memset(vist,0,sizeof(vist));
				ddd(i,0);
			}else{
				cout<<"No\n";
			}
			return 0;
		} 
	}
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...