Ant Trip

来源:互联网 发布:adobecs6破解补丁 mac 编辑:程序博客网 时间:2024/06/05 16:00


http://acm.hdu.edu.cn/showproblem.php?pid=3018

#include<iostream>
#include<string>
using namespace std;
int a[100100],indegree[100100],f[100100];
int find(int x)
{
 if(f[x]==x)
  return x;
 else
 {
  f[x]=find(f[x]);
  return f[x];
 }
}
void merge(int temp1,int temp2)
{
 int t1=find(temp1);
 int t2=find(temp2);
 if(t1!=t2)
  f[t2]=t1;
}
int main()
{
// freopen("C:\\Users\\John\\Desktop\\hi.txt","r",stdin);
 int n,m,i,j;
 while(cin>>n>>m)
 {
  for(i=1;i<=n;i++)
   f[i]=i;
  memset(indegree,0,sizeof(indegree));
  memset(a,-1,sizeof(a));
  while(m--)
  {
   int temp1,temp2;
   cin>>temp1>>temp2;
   indegree[temp1]++;
   indegree[temp2]++;
   merge(temp1,temp2);
  }
  for(i=1;i<=n;i++)
  {
   int t=find(i);
   if(a[t]==-1 && indegree[i]>0) a[t]=0;
   if(indegree[i] & 1) a[t]++;
  }
  int ans=0;
  for(i=1;i<=n;i++)
  {
   if(a[i]==0)
    ans++;
   if(a[i]>0)
    ans+=a[i]/2;
  }
  cout<<ans<<endl;
 }
 return 0;
}

0 0
原创粉丝点击