ZR 染色(连通块)

Posted lihan123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZR 染色(连通块)相关的知识,希望对你有一定的参考价值。

满分做法:

由题,树是不需要染色的,所以我们要让所有的连通块变成树。所有联通块的总点数 是 n,所以如果设联通块数为 C,则最后剩下的边个数就是 n − C,因此答案就是 m − n + C。

#include<cstring>
#include<queue>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
const int maxm=4e5+7;
int pre[maxm],last[maxm],other[maxm],l;
int n,m,ans;
bool vis[maxm];
void add(int x,int y)
{
 l++;
 pre[l]=last[x];
 last[x]=l;
 other[l]=y;
}
void dfs(int x)
{
 vis[x]=1;
 for(int p=last[x];p;p=pre[p])
 {
   int v=other[p];
   if(vis[v]) continue;
   dfs(v);
 }    
}
int main()
{
 scanf("%d%d",&n,&m);
 for(int i=1;i<=m;i++)
 {
  int x,y;
  scanf("%d%d",&x,&y);
  add(x,y);
  add(y,x);
 }
 for(int i=1;i<=n;i++)
 {
   if(vis[i]==0)
   {
        dfs(i);
        ans++;
   }
 }
 printf("%d
",m-n+ans);
 return 0;    
}

 

以上是关于ZR 染色(连通块)的主要内容,如果未能解决你的问题,请参考以下文章

P1285 队员分组(二分图&背包)

Tsinsen A1039bzoj2638黑白染色 (BFS树)

bzoj1434 [ZJOI2009]染色游戏

[FloodFill] aw1097. 池塘计数(bfs+dfs+FloodFill+模板题)

codevs2495 水叮当的舞步

求强连通分量Tarjan算法