目录
这次我来写一下关于csdn上每日一练的题目讲解。
第一题
蚂蚁家族
题目描述
小蚂蚁群是一个庞大的群体,在这个蚂蚁群中有n只小蚂蚁 ,为了保证所有蚂蚁在消息传送的时候都能接收到消息,需要在他们之间建立通信关系。就是要求小蚂蚁都可以通过多只或者直接联系到其他人。 已知几条小蚂蚁之间有通信关系,请问还需要再新建至少多少条关系?
输入描述:
第一行输入整数n,m;n为小蚂蚁总数;m为关系数。(1<=n,m<=1000) 以下m行每行m对整数x,y。(代表x与y有联系)
输出描述:
输出最少需要新建关系数。
输入样例
4 3
1 2
2 3
3 4
输出样例
0
题解
#include<bits/stdc++.h>
using namespace std;
int fa[10005]={},qwq[10005]={};
int n,m;
int zu(int x){return (fa[x]==x?x:fa[x]=zu(fa[x]));}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)fa[i]=i;
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
if(zu(x)!=zu(y))fa[zu(x)]=zu(y);
}
for(int i=1;i<=n;i++)qwq[zu(i)]++;
int tot=0;
for(int i=1;i<=n;i+