请求dalao解疑
  • 板块学术版
  • 楼主Never_Gone
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/9/28 21:59
  • 上次更新2024/9/29 12:51:41
查看原帖
请求dalao解疑
838542
Never_Gone楼主2024/9/28 21:59

原题P10378

本人极少使用vector,注释地方只能用于c++11,如果比赛环境该如何使用符合c++98的写法

#include<bits/stdc++.h>
//#define itn int见笑了 
const int maxn=1e5+10;

using namespace std;

int n,m;
int cnt1,cnt2,s1,s2;;
vector<int> e[maxn];
bool vis[maxn];

void dfs(int u,bool b){
	vis[u]=1;
	if(b) s1++;
	else s2++;
	for(int v:e[u]){
		if(!vis[v]) dfs(v,s1,s2,!b);
	}//怎么改? 
}

int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		e[u].push_back(v); e[v].push_back(u);
	}
	
	for(int i=1;i<=n;i++){
		if(!vis[i]){
			s1=0,s2=0;
			dfs(i,0);
			cnt1+=min(s1,s2); 
			cnt2+=max(s1,s2);
		}
	}
	
	cout<<cnt1<<" "<<cnt2;
	return 0;
}
2024/9/28 21:59
加载中...