UVA 11987 - Almost Union-Find
来源:互联网 发布:遗传算法优化svm参数 编辑:程序博客网 时间:2024/05/21 20:00
第一次交TLE,说好的并查集昂。
好吧我改。求和、个数 在各个步骤独立算。。
还是TLE。
看来是方法太慢,就一个数组(fa),移动的话,移动跟结点要遍历一次 T T
嗯,那就多一个数组。
0.189S。
#include<cstdio>const int MAXN=100000+10;int fa[MAXN],num[MAXN],idx[MAXN],cnt,n,m;long long sum[MAXN];int find(const int & x) //查找父结点,顺带路径压缩{return fa[x]==x? x: fa[x]=find(fa[x]); }inline void init(){for(int i=1;i<=n;i++){fa[i]=idx[i]=sum[i]=i;num[i]=1;}cnt=n;}inline void Union(){int p,q;scanf("%d%d",&p,&q);int rootp=find(idx[p]); //找p的根节点int rootq=find(idx[q]); if(rootp!=rootq){fa[rootp]=rootq;sum[rootq]+=sum[rootp];num[rootq]+=num[rootp];}}inline void update(const int &p,const int &rootp){sum[rootp]-=p;num[rootp]--;idx[p]=++cnt;sum[idx[p]]=p;num[idx[p]]=1;fa[idx[p]]=idx[p];}inline void move(){int p,q;scanf("%d%d",&p,&q);int rootp=find(idx[p]); //找p的根节点int rootq=find(idx[q]);if(rootp!=rootq){update(p,rootp);fa[idx[p]]=rootq;sum[rootq]+=p;num[rootq]++;}}inline void print(){int p;scanf("%d",&p);int rootp=find(idx[p]); printf("%d %lld\n",num[rootp],sum[rootp]);}int main(){while(scanf("%d%d",&n,&m)!=EOF){init();while(m--){int action;scanf("%d",&action);switch(action){case 1:Union();break;case 2:move();break;case 3:print();break;}}}}
- Uva-11987-Almost Union-Find
- UVA 11987 Almost Union-Find
- uva 11987 Almost Union-Find
- UVA 11987 - Almost Union-Find
- UVA 11987 Almost Union-Find
- UVA - 11987 Almost Union-Find
- UVA 11987 - Almost Union-Find
- UVa 11987 - Almost Union-Find
- UVA 11987 Almost Union-Find
- Almost Union-Find UVA 11987
- uva 11987 Almost Union-Find
- UVA 11987 Almost Union-Find
- uva 11987 Almost Union-Find
- Almost Union-Find UVA
- uva 11987 Almost Union-Find(加权并查集)
- uva 11987 - Almost Union-Find(并查集)
- UVA 11987 Almost Union-Find(并查集)
- uva 11987 Almost Union-Find(并查集)
- The Difference Between Encoding, Encryption, and Hashing
- MySQL配置文件优化(Innodb)
- AsyncTask 与 对话框显示 view.WindowManager$BadTokenException: Unable to add window…is not valid; is your a
- 【Win8不好用?简单方法助您还原之前系统】
- hdu 1402 A * B Problem Plus
- UVA 11987 - Almost Union-Find
- POJ-1365-Prime Land
- 开源成为一种趋势,iMatrix平台强势归来!
- ArcGIS License Manager 静默授权命令摘录
- plsql-聚簇表初解
- libnl3安装及使用
- A Security-focused HTTP Primer---http://danielmiessler.com/popular/
- VC++无标题窗口以及控件拖动的方法(修正)
- 怎样学会理财?