1 solutions

  • 0
    @ 2025-11-5 15:54:45

    C++ :

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    using namespace std;
    int t,n,parent[11000],ans,a,b;
    
    int root(int k)
    {
    	if (parent[k] == k) return k;
    	else   return parent[k] = root(parent[k]);
    }
    
    void merge(int a,int b)
    {
    	parent[root(a)] = root(b);
    }
    
    int main()
    {
    	//freopen("in.txt","r",stdin);
    	//freopen("out.txt","w",stdout);
    	scanf("%d",&t);
    	while (t--)
    	{
    		scanf("%d",&n);
    		ans = 0;
    		for (int i = 1 ; i <= 10000 ; i ++)
    			parent[i] = i;
    		for (int i = 1; i <= n ; i ++)
    		{
    			scanf("%d%d",&a,&b);
    			if (root(a) != root(b)) merge(root(a),root(b));
    			else ans ++;
    		}
    		printf("%d\n",ans);
    	}
    	return 0;
    }
    
    
    • 1

    Information

    ID
    17318
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By