2 条题解

  • 0
    @ 2025-10-8 16:48:58
    #include<bits/stdc++.h>
    using namespace std;
    int fa[1100];
    int findfa(int x){return (fa[x]==x) ? fa[x] : fa[x]=findfa(fa[x]);}
    int main()
    {
        int n,m;scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)fa[i]=i;
        int ans=0;
        for(int i=1;i<=m;i++)
        {
            int x,y;scanf("%d%d",&x,&y);
            int tx=findfa(x),ty=findfa(y);
            if(tx==ty)ans++;//当x和y的祖先相等时,说明x和y已经是连接的,所以当前边可以删 
            else fa[tx]=ty;//否则当前边要利用起来,起到合并(连接)两个团体的作用 
        }
        printf("%d\n",ans);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:48:51
      #include<bits/stdc++.h>
      using namespace std;
      int fa[1100];
      int findfa(int x){return (fa[x]==x) ? fa[x] : fa[x]=findfa(fa[x]);}
      int main()
      {
      	int n,m;scanf("%d%d",&n,&m);
      	for(int i=1;i<=n;i++)fa[i]=i;
      	int ans=0;
      	for(int i=1;i<=m;i++)
      	{
      		int x,y;scanf("%d%d",&x,&y);
      		int tx=findfa(x),ty=findfa(y);
      		if(tx==ty)ans++;//当x和y的祖先相等时,说明x和y已经是连接的,所以当前边可以删 
      		else fa[tx]=ty;//否则当前边要利用起来,起到合并(连接)两个团体的作用 
      	}
      	printf("%d\n",ans);
      	return 0;
      }
      • 1

      信息

      ID
      266
      时间
      1000ms
      内存
      128MiB
      难度
      3
      标签
      递交数
      177
      已通过
      91
      上传者