1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=100005; int n,m,k,s,t,a[N][2],bo,vis[N],vis1[N]; vector<pair<int,int>> e[N]; int b[N],tot,c[N],tot1; void dfs(int u,int ID){ vis[u]=1; for (auto [v,id]:e[u]){ if (id==ID) continue; if (vis[v]){ if (!bo) {bo=a[id][0];c[++tot1]=id;} continue; } dfs(v,id); } } void dfs1(int u,int ID){ vis1[u]=1; for (auto [v,id]:e[u]){ if (id==ID || vis1[v]) continue; b[++tot]=id; dfs1(v,id); } } int main(){ cin>>n>>m; for (int i=1;i<=n;++i){ cin>>s>>t; a[i][0]=s;a[i][1]=t; e[s].push_back({t,i}); e[t].push_back({s,i}); } for (int i=1;i<=m;++i) if (!vis[i]){ bo=0; dfs(i,0); dfs1(bo?bo:i,c[tot1]); } cout<<n-tot1-tot<<"\n"; memset(vis,0,sizeof(vis)); for (int i=1;i<=tot1;++i) cout<<c[i]<<"\n",vis[c[i]]=1; for (int i=1;i<=tot;++i) cout<<b[i]<<"\n",vis[b[i]]=1; for (int i=1;i<=n;++i) if (!vis[i]) cout<<i<<"\n"; }
- 1
信息
- ID
- 509
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 18
- 已通过
- 10
- 上传者