Connections in Galaxy War ZOJ - 3261 离线操作+逆序并查集 并查集删边
#include<iostream>
#include<cstring>
#include<stdio.h>
#include<map>
#include<vector>
#define cle(a) memset(a,0,sizeof(a))
using namespace std;
const int N=+;
int w[];
bool cmp(int a,int b){
return a>b;
}
int n,q,m,fa[N],arr[][],ans[];
vector<pair<int,int> >vp;
map<pair<int,int>,int>mp;
void init(){
for(int i=;i<=n+;i++)fa[i]=i;
mp.clear();
vp.clear();
cle(ans);
cle(arr);
}
int find(int x){
if(fa[x]!=x)
fa[x]=find(fa[x]);
return fa[x];
}
void Union(int a,int b)
{
int x=find(a);
int y=find(b);
if(x==y)
return;
if(w[x]>w[y])
fa[y]=x;
else if(w[x]<w[y])
fa[x]=y;
else{ //这里 的判断要注意
if(x<y)
fa[y]=x;
else
fa[x]=y;
}
}
int main()
{
int mark=;
while(cin>>n)
{
if(mark)
printf("\n");
init();
//每个点的价值
for(int i=;i<n;i++)
scanf("%d",&w[i]);
scanf("%d",&m);
//边
for(int i=;i<=m;i++)
{
scanf("%d%d",&arr[i][],&arr[i][]);
//大的在前面,为后面建边做准备
if(arr[i][]>arr[i][])
swap(arr[i][],arr[i][]);
}
scanf("%d",&q);
char s[];
int t,p;
for(int i=;i<=q;i++)
{
scanf("%s",s);
if(s[]=='q')
{
scanf("%d",&t);
vp.push_back({t,-});
}
else{
scanf("%d%d",&t,&p);
if(t>p)
swap(t,p);
//标记已经建过边了,相当于标记要被拆掉
mp[{t,p}]=;
vp.push_back({t,p});
}
}
//先把不会被拆掉的边建上
for(int i=;i<=m;i++)
if(!mp[{arr[i][],arr[i][]}])
Union(arr[i][],arr[i][]);
//然后从后往前遍历操作
//如果是查询,直接做
//如果是拆边,就建上
int j=;
for(int i=vp.size()-;i>=;i--){
int a=vp[i].first;
int b=vp[i].second;
//如果是查询
if(b==-)
{
//找到父节点
int c=find(a);
//如果相同,就是-1
if(w[a]>=w[c])
c=-;
//保存答案
ans[j++]=c;
}
else
Union(a,b);
}
for(int i=j-;i>=;i--)
printf("%d\n",ans[i]);
mark=;
}
return ;
}
Connections in Galaxy War ZOJ - 3261 离线操作+逆序并查集 并查集删边的更多相关文章
- (并查集)Connections in Galaxy War -- zoj --3261 还没写
链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3261 http://acm.hust.edu.cn/vjudge/ ...
- Connections in Galaxy War ZOJ - 3261 (并查集)
点权并查集的反向离线操作 题目大意:有n个stars,每一个都一定的“颜值”.然后stars与stars之间可以相连,query c表示再与c相连的stars中,颜值比c高的,stars的标号,如果有 ...
- L - Connections in Galaxy War - zoj 3261
题意:有一个帝国在打仗,敌方会搞一些破坏,总共用N个阵地,每个阵地都有一个武力值,当第一地方收到攻击的时候他可以进行求助,当然求助的对象只能是武力值比他高的,如果求助失败就输出 ‘-1’, 求助成功就 ...
- 洛谷 P1197 BZOJ 1015 [JSOI2008]星球大战 (ZOJ 3261 Connections in Galaxy War)
这两道题长得差不多,都有分裂集合的操作,都是先将所有操作离线,然后从最后一步开始倒着模拟,这样一来,分裂就变成合并,也就是从打击以后最终的零散状态,一步步合并,回到最开始所有星球都被连为一个整体的状态 ...
- ZOJ3261:Connections in Galaxy War(逆向并查集)
Connections in Galaxy War Time Limit: 3 Seconds Memory Limit: 32768 KB 题目链接:http://acm.zju.edu. ...
- Connections in Galaxy War (逆向并查集)题解
Connections in Galaxy War In order to strengthen the defense ability, many stars in galaxy allied to ...
- Connections in Galaxy War(逆向并查集)
Connections in Galaxy War http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3563 Time Limit ...
- ZOJ 3261 - Connections in Galaxy War ,并查集删边
In order to strengthen the defense ability, many stars in galaxy allied together and built many bidi ...
- zoj 3261 Connections in Galaxy War
点击打开链接zoj 3261 思路: 带权并查集 分析: 1 题目说的是有n个星球0~n-1,每个星球都有一个战斗值.n个星球之间有一些联系,并且n个星球之间会有互相伤害 2 根本没有思路的题,看了网 ...
随机推荐
- GitHub新手教学(从新手安装到初步使用)
版权声明:本文为博主原创文章,转载请标明出处! 博客地址:http://blog.csdn.net/qazwsxpcm https://blog.csdn.net/qazwsxpcm/article/ ...
- 编写 Django 应用单元测试
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 我们博客功能越来越来完善了,但这也带来了一个问题,我们不敢轻易地修改已有功能的代码了 ...
- java虚拟机jvm启动后java代码层面发生了什么?
java虚拟机jvm启动后java代码层面发生了什么? 0000 我想验证的事情 java代码在被编译后可以被jdk提供的java命令进行加载和运行, 在我们的程序被运行起来的时候,都发生了什么事情, ...
- Mybatis随记(一)update动态SQL
<update id="updateUser"> UPDATE user_info SET <if test="gzhOpenId != null an ...
- Python学习小记(2)---[list, iterator, and, or, zip, dict.keys]
1.List行为 可以用 alist[:] 相当于 alist.copy() ,可以创建一个 alist 的 shallo copy,但是直接对 alist[:] 操作却会直接操作 alist 对象 ...
- codewars--js--create phone number
Write a function that accepts an array of 10 integers (between 0 and 9), that returns a string of th ...
- Java中的合并与重组(上)
通过优锐课核心java学习笔记中,我们可以看到,码了很多专业的相关知识, 分享给大家参考学习. 虽然在Git中合并和重组是相似的,但它们具有两种不同的功能. 要保持自己的历史记录整洁或完整,这是你应该 ...
- 高灵敏度自带DSP降噪算法的audio codec解决方案
背景调研 随着AI渗透到各行各业,人们对语音的需求也越来越大,最近一两年,各种AI音频设备如雨后春笋般冒出.各种智能AI设备的推出,意味者市场对低成本的音频采集设备越来越多.针对这种情况,我们开发 ...
- 在qt5中使用qtmqtt库
qtmqtt库源码下载链接 链接:https://pan.baidu.com/s/1TyqbLX5x17mwhAX-OJiorw 提取码:i6ww perl安装下载链接 链接:https://pan. ...
- MySQL的JDBC驱动(8.0版本)
1.引用外部库 mysql-connector-java-8.0.版本的jar 2.jdbc驱动类:com.mysql.jdbc.Driver 改成 com.mysql.cj.jdbc.Drive ...