记录编号 460487 评测结果 AAAAAAAAAA
题目名称 游历校园 最终得分 100
用户昵称 Gravatar胖周zzf 是否通过 通过
代码语言 C++ 运行时间 0.821 s
提交时间 2017-10-17 13:31:00 内存使用 1.93 MiB
显示代码纯文本
#include<cstdio>
#include<vector>
using namespace std;
int d[100010]={0},now=0;
bool f[100010]={0};
vector<int>T;
struct data{vector<int>s;}x[100010];
void DFS(int rt){
	f[rt]=1;now++;
	for(int j;!x[rt].s.empty();x[rt].s.pop_back()){
		j=x[rt].s.back();
		if(f[j]==0){
			T.push_back(j);
			DFS(j);
		}
	}
}
int main(){
	freopen("sent.in","r",stdin);
	freopen("sent.out","w",stdout);
	int n,m,ans=0,a;scanf("%d%d",&n,&m);
	for(register int i=0,a,b;i<m;i++){
		scanf("%d%d",&a,&b);
		d[a]++;d[b]++;
		x[a].s.push_back(b);
		x[b].s.push_back(a);
	}
	for(int i=1;i<=n;i++){
		if(f[i]==0&&d[i]!=0){
			T.push_back(i);DFS(i);a=0;
			for(int j;!T.empty();T.pop_back()){
				j=T.back();
				if(d[j]%2==1)
					a++;
			}
			if(a!=0){a=a/2;a--;}
			ans+=a;
			ans++;
		}
		if(now==n)break;
	}
	printf("%d",ans-1);
	return 0;
}