hdu 2473 Junk-Mail Filter
来源:互联网 发布:理解专业程序员 编辑:程序博客网 时间:2024/05/29 19:15
看了别人的代码算是学到了如何实现并查集的删除,也就是把被删除节点保持不动,继续作为其他点查找的桥梁,然后为该节点重新设置新的节点,在纸上模拟下该过程大概就能懂了
#include<iostream>#include<cstring>#define maxn 1000000+5using namespace std;string cmd;int n,m,replace;int f[maxn],g[maxn],sign[maxn];void ready(){for(int i=0;i<n;i++) f[i]=g[i]=i;memset(sign,0,sizeof(sign));//不能只初始到n就结束 }int dfs(int x){if(f[x]!=x) f[x]=dfs(f[x]);return f[x];}void build(int x,int y){if(dfs(x)!=dfs(y)) f[dfs(x)]=dfs(y);}void de(int x){f[replace]=replace;//新节点的初始化 g[x]=replace++;}int main(){int casee=1;while(cin>>n>>m&&(m||n)){ready();replace=n;int x,y;while(m--){cin>>cmd;if(cmd=="M") cin>>x>>y,build(g[x],g[y]);else cin>>x,de(x);}int sum=0;for(int i=0;i<n;i++){if(!sign[dfs(g[i])]) sum++,sign[dfs(g[i])]=1;}cout<<"Case #"<<casee++<<": "<<sum<<endl;}return 0;}
0 0
- HDU 2473 Junk-Mail Filter
- HDU 2473 Junk-Mail Filter
- HDU 2473 Junk-Mail Filter
- hdu 2473 Junk-Mail Filter
- HDU 2473 Junk-Mail Filter
- hdu 2473 Junk-Mail Filter
- HDU 2473 Junk-Mail Filter
- HDU 2473 Junk-Mail Filter
- HDU-2473 Junk-Mail Filter
- HDU 2473 Junk-Mail Filter
- HDU-2473-Junk-Mail Filter
- hdu 2473 Junk-Mail Filter
- HDU 2473 Junk-Mail Filter(删点)
- hdu 杭电 2473 Junk-Mail Filter
- 2473 Junk-Mail Filter
- hdoj 2473 Junk-Mail Filter
- hud 2473 Junk-Mail Filter
- hdoj 2473 Junk-Mail Filter
- Web开发者的最爱 5个超实用的HTML5 API
- 多选一按钮的一个解决方法
- kzalloc和kmalloc函数详解
- 各种实用的东东
- 软件构架设计的6大原则
- hdu 2473 Junk-Mail Filter
- 浙江大学PAT_乙级_1016. 部分A+B (15)
- C# 预编译指令
- JS根据文本框内容匹配并高亮显示
- dom(getElementsByName()\getElementsByName()\getAttribute()\setAttribute()\节点属性)
- 【mybatis】不靠谱程序员之mysql环境下mybatis数据源驱动重复加载
- label 自适应高度
- C# gdi画坐标轴
- 关于unity3D 打包的问题BuildAssetBundle的实现