题目

Description


Input

Output

Sample Input
样例输入 1:
4 4
1 3 4
2 4 8
1 2 2
3 4 3
样例输入 2:
3 2
1 2 3
2 3 4

Sample Output
样例输出 1:
-1
8
8
3
样例输出 2:
-1
-1

Data Constraint

思路

首先,答案是单调不增的

并且容易证出,所有联通块大小为偶数

对于只回答最后一组询问,把边权排序,直到没有大小是技术的联通块就行

现在要推广到所有询问

考虑将时间看为x,边权看为y,这么看一条边就是平面上一个点。
将询问时间看为x,答案看为y,询问也变成了一个点。

我们就可以用分治乱搞。

代码

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+77;
int n,m;
int sz[N],fa[N],cnt,rk[N];
int ans[N];
struct E
{int x,y,w,id;
}e[N];
bool cmp(E a,E b){return a.w<b.w;}
int fi;
vector<E> b[N*4];
multiset<int> em;
int gf(int x)
{return fa[x]==0?x:gf(fa[x]);
}
struct yjy
{int x,y,w,irs;
};
stack<yjy> S;
void ins(int x,int l,int r,int tl,int tr,const E &a)
{if(l>tr||r<tl) return;if(tl<=l&&r<=tr){b[x].push_back(a); return;}ins(x<<1,l,l+r>>1,tl,tr,a);ins(x<<1|1,(l+r>>1)+1,r,tl,tr,a);
}
void merge(E e)
{int x=gf(e.x),y=gf(e.y);if(rk[x]>rk[y])swap(x,y);if(x!=y){em.insert(e.w);yjy a=(yjy){x,y,e.w,rk[x]==rk[y]};S.push(a);fa[x]=y;if(rk[y]==rk[x])rk[y]++;if((sz[y]&1)&&(sz[x]&1))cnt-=2;sz[y]+=sz[x];}else S.push((yjy){0,0,0,0});
}
void pop()
{yjy a=S.top();S.pop();if(a.x==0)return;sz[a.y]-=sz[a.x];fa[a.x]=0;if(a.irs) rk[a.y]--;em.erase(em.find(a.w));if((sz[a.y]&1)&&(sz[a.x]&1)) cnt+=2;
}
void work(int x,int l,int r)
{for(E t:b[x]) merge(t);if(l==r){int LF=fi;if(cnt!=0){int i=fi+1;for(;i<=m;i++){if(cnt==0)break;if(e[i].id<=l){merge(e[i]);ins(1,1,m,e[i].id,l-1,e[i]);}}fi=i-1;}if(cnt==0)ans[l]=*em.rbegin();for(int i=fi; i>LF; i--)if(e[i].id<=l)pop();}else{work(x<<1|1,(l+r>>1)+1,r);work(x<<1,l,l+r>>1);}for(int i=0; i<b[x].size(); i++)pop();
}
int main()
{freopen("road.in","r",stdin);freopen("road.out","w",stdout);cin>>n>>m;for(int i=1,x,y,w; i<=m; i++){scanf("%d%d%d",&x,&y,&w);e[i]=(E){x,y,w,i};}sort(e+1,e+1+m,cmp);for(int i=1; i<=n; i++) sz[i]=1;cnt=n;work(1,1,m);for(int i=1; i<=m; i++) if(ans[i]==0) printf("%d\n",-1);else printf("%d\n",ans[i]);
}

【JZOJ 省选模拟】铺路 (road )相关推荐

  1. 【JZOJ 省选模拟】向日葵人生

    Description Input Output Sample Input 样例 1 输入: 2 3 2 1 2 2 3 Sample Output 样例 1 输出: 665496241 Data C ...

  2. 6687. 【JZOJ 省选模拟】树没了(tree)

    题目 Description Input Output 2操作的个数行,每行代表一个询问的答案. Sample Input 5 5 1 1 2 3 4 5 1 2 2 3 2 4 1 5 Q 1 M ...

  3. 【JZOJ 省选模拟】多项式(poly)

    题目 Description Input Output Sample Input 样例输入 1: 2 7 -7 14 样例输入 2: 3 1 4 1 5 样例输入 3: 0 998244353 Sam ...

  4. 【JZOJ 省选模拟】我的朋友们

    题目 Description Input Output 一行一个整数,表示题目描述中的期望对998244353取模的值. Sample Input 样例 1输入: 4 3 1 5 4 6 3 7 1 ...

  5. 【JZOJ 省选模拟】感受清风

    题目 Description Input Output 对于每个 qu 事件或者 qd 事件输出一个整数表示答案,答案对1000001取模(提示:这个数不 是质数,有101×9901=1000001) ...

  6. 【JZOJ 省选模拟】6681.图

    题目 Description 给定一张无重边.自环.割点的平面图,你需要回答 Q 次询问,每次询问会给出一个简单环,你需要回答在由这个简单环围成的多边形内部(包括边界上)的点有多少个. 保证图中每条线 ...

  7. 【JZOJ 省选模拟】6707.异或树(xor)

    题目 Description Input Output Sample Input 样例输入1: 2 2 998244353 样例输入2: 10 3 998244353 Sample Output 样例 ...

  8. 【JZOJ 省选模拟】人生(life)

    题目 Description Input 第一行一个正整数n. 第二行n个整数,其中第i个整数为1表示点i的颜色为黑色,为0表示点i的颜色为白色,为-1 则不确定. Output 输出一行一个整数表示 ...

  9. 【JZOJ 省选模拟】迷宫(maze)

    题目 Description Input Output Sample Input 样例输入 4 8 0 A 1 B 1 A 0 B 2 A 3 B 3 A 2 B 0 C 2 D 2 C 0 D 1 ...

最新文章

  1. MindSpore静态图语法支持
  2. 如何在Debian 8/7上安装PostgreSQL 9.6
  3. Spark基础:(六)Spark SQL
  4. PCL点云库学习(1):环境配置(Ubuntu16.04+QT5+VTK8.0)
  5. 学python好还是不学好_非专业人士有必要学Python吗?
  6. JavaScript--获取页面盒子中鼠标相对于盒子上、左边框的坐标
  7. 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(一)-- 起步
  8. java keytool证书工具使用小结
  9. ubuntu mv和cp命令
  10. java局部内部类 final_Java的局部内部类以及final类型的参数和变量
  11. java获取窗口_如何使用Java获取当前打开的窗口/进程的列表?
  12. php语句过滤掉html标签_php过滤HTML标签、属性等正则表达式
  13. 对 n = 2,3,...,300, 判断那些 Mersenne 数 M_n=2^n-1 是素数 | matlab 源码
  14. oracle怎么删除.dat,oracle 手工删库
  15. 思科ASA防火墙端口映射
  16. 【矩阵论笔记】过渡矩阵
  17. 个人windows-manjaro双系统配置记录
  18. 某三位数除以10余9、除以9余8、除以8余7
  19. 有关javabean的说法不正确的是_关于JavaBean,下列的叙述哪一项是不正确的?( )...
  20. python飞行棋项目

热门文章

  1. 4位递增计数器的设计(详解并附有代码)
  2. mysqldumpnbsp;参数说明
  3. 开源项目-AMS资产管理系统
  4. GEE绘制DEM全解析
  5. 一文读懂高速互联的阻抗及反射(中)
  6. 索骥馆-网络创业之《网上赚钱从入门到精通》扫描版[PDF]
  7. 使用机器学习做DGA域名识别
  8. mysql能放在电脑哪个盘_电脑文件一般放在哪个盘好呢?
  9. Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(一)
  10. 怎么用html做音乐播放列表,html网页音乐播放器自带播放列表