洛谷 P2451 [SDOI2005]遗传代码 [并查集]
2017-07-22 17:31
288 查看
题目连接
什么欧拉子图,欧拉环,欧拉一笔画等等。。。并查集+特判解决一切问题。
![](http://img.blog.csdn.net/20170724195454059?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVtb25vaWw=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
什么欧拉子图,欧拉环,欧拉一笔画等等。。。并查集+特判解决一切问题。
#include<stdio.h> int f[1024],cnt[1024],cnt2[1024],size[1024],n,ans; int findroot(int x){ if(f[x]==x)return x; return f[x]=findroot(f[x]); } int main(){ freopen("pie.in","r",stdin); freopen("pie.out","w",stdout); for(int i=1;i<=1000;i++) f[i]=i,size[i]=1; scanf("%d",&n); for(int i=0;i<n;i++){ int l,r; scanf("%d%d",&l,&r); cnt[l]--; cnt[r]++; int lr=findroot(l); int rr=findroot(r); if(lr==rr)continue; f[lr]=rr; size[rr]+=size[lr]; size[lr]=0; } for(int i=1;i<=1000;i++){ if(cnt[i]<0)continue; cnt2[findroot(i)]+=cnt[i]; } for(int i=1;i<=1000;i++){ if(!size[i])continue; ans+=cnt2[i]; if(size[i]>1&&cnt2[i]==0)ans++; } printf("%d\n",ans+n); return 0; }
相关文章推荐
- 洛谷P1463 [SDOI2005]反素数ant
- 【洛谷2335】【SDOI2005】位图
- 洛谷P2449 [SDOI2005]矩形
- 洛谷 P2335 [SDOI2005]位图
- 洛谷 P2439 [SDOI2005]阶梯教室设备利用
- 洛谷 P1463 [SDOI2005]反素数ant
- 【洛谷2439】【SDOI2005】阶梯教室设备利用
- 洛谷P2434 [SDOI2005]区间
- 洛谷 P2335 [SDOI2005]位图 [DP]
- 洛谷 P2452 [SDOI2005]屠龙传说-屠龙枪卷 [计算几何]
- 洛谷 P2434 [SDOI2005]区间
- 洛谷 P1463 [SDOI2005]反素数ant && codevs2912反素数
- 洛谷 P2449 [SDOI2005]矩形
- 洛谷 P1463 [SDOI2005]反素数ant && P1820 寻找AP数
- 洛谷 P2335 [SDOI2005]位图
- 洛谷 P2434 [SDOI2005]区间
- 暴力-洛谷P1463 [SDOI2005]反素数ant
- NOI2005 BZOJ1500 维修队列 题解&代码
- 洛谷P2498 [SDOI2012]拯救小云公主 【二分 + 并查集】
- [BZOJ1202][HNOI2005][并查集]狡猾的商人