1 条题解

  • 0
    @ 2023-9-21 16:58:01

    image

    #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
    上传者