90分求助,WA最后一个点
查看原帖
90分求助,WA最后一个点
602282
huangguoguo楼主2022/1/20 10:35

比较容易想到二分图染色,思路是算每个图最少的黑点或白点,然后总数减掉。但是WA最后一个点,求助!

#include  <bits/stdc++.h>
using namespace std;
int n,m,bai,hei,cnt;
const int MAX=1005;
bool g[MAX][MAX];
int color[MAX];
void dfs(int v,int c) {
	if (c==1) bai++;
	else hei++;
	color[v]=c;
	for (int i=0;i<n;i++) 
		if (g[v][i]&&!color[i])
			dfs(i,-c);
}
int main() {
	cin>>n>>m;
	for (int i=1;i<=m;i++) {
		int x,y;
		cin>>x>>y;
		g[x][y]=1;
		g[y][x]=1;
	}
	for (int i=0;i<n;i++)
		for (int j=0;j<n;j++) 
			if (g[i][j]&&!color[i]) {
				bai=0,hei=0;
				dfs(i,1);
				cnt+=min(bai,hei);
			}
	cout<<n-cnt<<endl;
	return 0;
}
2022/1/20 10:35
加载中...