社区讨论
求条/hack
P14807[CCPC 2024 哈尔滨站] 欢迎加入线上会议!参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mjeebagi
- 此快照首次捕获于
- 2025/12/20 22:30 2 个月前
- 此快照最后确认于
- 2025/12/23 13:30 2 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,k,a[1000000],b[1000000],vis[1000000],st=-1,uu,vv,cnt=1,sum=0;
vector<int> v[1000000];
queue<int> q;
int main()
{
cin>>n>>m>>k;
for(int i=1;i<=k;i++)
{
cin>>a[i];
b[a[i]]=1;
}
for(int i=1;i<=m;i++)
{
cin>>uu>>vv;
v[uu].push_back(vv);
v[vv].push_back(uu);
}
for(int i=1;i<=n;i++)
{
if(!b[i])
{
st=i;
break;
}
}
if(st==-1)
{
cout<<"No";
return 0;
}
vis[st]=1;
q.push(st);
while(cnt<n&&!q.empty())
{
int now=q.front();
q.pop();
if(b[now])
{
continue;
}
for(auto j:v[now])
{
if(!vis[j])
{
q.push(j);
cnt++;
vis[j]=1;
}
}
}
if(cnt==n)
{
cout<<"Yes\n";
for(int i=1;i<=n;i++)
{
vis[i]=0;
}
vis[st]=1;
q.push(st);
cnt=1;
queue<int> ans;
while(cnt<n&&!q.empty())
{
while(!ans.empty())
{
ans.pop();
}
int now=q.front();
q.pop();
if(b[now])
{
continue;
}
for(auto j:v[now])
{
if(!vis[j])
{
q.push(j);
cnt++;
vis[j]=1;
ans.push(j);
}
}
if(!ans.empty())
{
sum++;
}
}
for(int i=1;i<=n;i++)
{
vis[i]=0;
}
vis[st]=1;
q.push(st);
cnt=1;
cout<<sum<<"\n";
while(cnt<n&&!q.empty())
{
while(!ans.empty())
{
ans.pop();
}
int now=q.front();
q.pop();
if(b[now])
{
continue;
}
for(auto j:v[now])
{
if(!vis[j])
{
q.push(j);
cnt++;
vis[j]=1;
ans.push(j);
}
}
if(!ans.empty())
{
cout<<now<<" "<<ans.size()<<" ";
while(!ans.empty())
{
cout<<ans.front()<<" ";
ans.pop();
}
cout<<"\n";
}
}
return 0;
}
cout<<"No\n";
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...