Connections in Galaxy War (逆向并查集)
来源:互联网 发布:阿里云免费镜像 编辑:程序博客网 时间:2024/05/17 06:16
Connections in Galaxy War
ZOJ - 3261从这里学到了这些东西。。
map<int,string>mp[10]; 这地方是可以这样用的。。这样就把原本是二维的数组变为了1维,下面也能很好地体现这个例子 mp[1][2]="adsf";
#include <stdio.h>#include <string.h>#include <algorithm>#include <iostream>#include <map>using namespace std;const int MAXN=10010;int F[MAXN];int p[MAXN];int val[MAXN];//最大值的下标int num[MAXN];//最大值int find(int x){ if(F[x]==-1)return x; return F[x]=find(F[x]);}void bing(int u,int v){ int t1=find(u),t2=find(v); if(t1!=t2) { F[t1]=t2; if(num[t1]>num[t2]) { num[t2]=num[t1]; val[t2]=val[t1]; } else if(num[t1]==num[t2] && val[t2]>val[t1]) val[t2]=val[t1]; }}map<int,int>mp[MAXN];//这个map很好,用一维来判断了某条边是否存在。struct Edge{ int u,v;}edge[20010];bool used[20010];struct Node{ int op; int u,v;}node[50010];int ans[50010];char str[20];int main(){ int n; int Q; int m; int u,v; bool first=true; while(scanf("%d",&n)==1) { if(first)first=false; else printf("\n"); memset(F,-1,sizeof(F)); for(int i=0;i<n;i++) { scanf("%d",&p[i]); val[i]=i; num[i]=p[i]; mp[i].clear(); } scanf("%d",&m); for(int i=0;i<m;i++) { scanf("%d%d",&u,&v); if(u>v)swap(u,v); mp[u][v]=i; edge[i].u=u; edge[i].v=v; used[i]=false; } scanf("%d",&Q); for(int i=0;i<Q;i++) { scanf("%s",&str); if(str[0]=='q') { node[i].op=0; scanf("%d",&node[i].u); } else { node[i].op=1; scanf("%d%d",&u,&v); if(u>v)swap(u,v); node[i].u=u; node[i].v=v; int tmp=mp[u][v]; used[tmp]=true; } } for(int i=0;i<m;i++) if(!used[i]) { bing(edge[i].u,edge[i].v); } int cnt=0; for(int i=Q-1;i>=0;i--) { if(node[i].op==0) { u=node[i].u; int t1=find(u); if(num[t1]>p[u])ans[cnt++]=val[t1]; else ans[cnt++]=-1; } else { bing(node[i].u,node[i].v); } } for(int i=cnt-1;i>=0;i--)printf("%d\n",ans[i]); } return 0;}
0 0
- zoj Connections in Galaxy War(逆向并查集)
- Connections in Galaxy War (逆向并查集)
- zoj 3261 Connections in Galaxy War(逆向并查集)
- Zoj 3563 Connections in Galaxy War 逆向并查集
- ZOJ-3261-Connections in Galaxy War [逆向并查集]
- Zoj 3261 Connections in Galaxy War (逆向并查集)
- zoj 3261 Connections in Galaxy War(并查集+离线逆向操作)
- ZOJ 3261 Connections in Galaxy War (离线处理+逆向并查集)
- ZOJ 3261 Connections in Galaxy War(并查集)
- ZOJ 3261 Connections in Galaxy War【并查集】
- zoj3261 Connections in Galaxy War (离线并查集)
- ZOJ 3261 Connections in Galaxy War (并查集)
- zoj 3261 - Connections in Galaxy War(并查集)
- ZOJ 3261 Connections in Galaxy War 并查集
- Zoj 3261 Connections in Galaxy War【逆序并查集】
- Connections in Galaxy War并查集+set+脑洞
- Connections in Galaxy War(反向并查集)
- ZOJ Problem Set - 3261 Connections in Galaxy War(并查集)
- 部署 instance 到 VXLAN
- 《递归递推练习》J
- L2 Population 原理
- 获取汉字的首字母
- PHP 实现二分查找
- Connections in Galaxy War (逆向并查集)
- javaScript实现验证码功能
- 安卓图片加载汇总(Glide、Picasso)
- 135-大写转换服务器
- 配置 L2 Population
- Neutron 默认安全组规则
- 信息摘要技术
- 应用新安全组
- 页面自动执行(加载)js的几种方法