标签:fa int memset Ant 3.7 10108 ans sizeof include
性质题:
如果一个连通块可以构成欧拉回路或者路径,显然一笔画完事
然后如果有多个奇数度的点,设奇数度的点为ans,显然我们会发现这个要画ans/2笔,(奇数度的点一定成对存在)
#include<cstdio> #include<algorithm> #include<cstring> #include<queue> #include<stack> using namespace std; const int M=1e5+5; int fa[M],in[M],a[M],b[M]; int get(int x){ if(fa[x]==0) return x; return fa[x]=get(fa[x]); } int main(){ int n,m; while(scanf("%d %d",&n,&m)!=EOF){ memset(in,0,sizeof(in)); memset(fa,0,sizeof(fa)); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); int cnt=0; for(int i=1;i<=m;i++){ int u,v; scanf("%d %d",&v,&u); in[v]++,in[u]++; u=get(u),v=get(v); if(u!=v) fa[v]=u; } for(int i=1;i<=n;i++){ if(get(i)==i) cnt++; } for(int i=1;i<=n;i++){ a[get(i)]++; if(in[i]%2==1) b[get(i)]++; } int ans=0; for(int i=1;i<=n;i++){ if(a[i]<=1) continue; else if(b[i]==0) ans++; else if(b[i]>0) ans+=b[i]/2; } printf("%d\n",ans); } return 0; }
标签:fa,int,memset,Ant,3.7,10108,ans,sizeof,include 来源: https://www.cnblogs.com/acmLLF/p/13714020.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。