题目

小P和小R是一对非常好的朋友,今天他们在玩一个模拟建设类游戏。

游戏中共有nn个城市,通过mm条双向道路连接。第ii条道路连接了城市aiai和bibi。

不幸的是,在一次巨大的灾难以后,这mm条道路全部损坏了。修复第ii条道路需要cici天。把这些道路全部修复的代价可能太大,小P和小R只希望某kk个城市之间两两恢复通行。

游戏中,小P和小R拥有很多的修路工人,所以如果一个修路方案包含多条道路,那么这些道路可以同时开工。整个工程完工的时间就是这个工程中需要时间最长的道路的用时。

小P和小R为了给你加大难度,一共要问你qq个这样的问题。不同的问题之间不会互相影响,你可以认为这qq个问题是发生在不同的平行世界中的。

输入格式
从标准输入读入数据。

第一行包含三个整数n,m,qn,m,q。

接下来mm行,每行三个整数ai,bi,ciai,bi,ci,描述一条道路。注意道路的两端有可能是相同的城市。

接下来qq行,每行描述一个问题:第一个数是这个问题的kk,接下来kk个数表示这次问题中需要两两恢复通行的城市编号。保证kk至少为1;一个问题中可能多次出现同一个城市。

输出格式
输出到标准输出。

输出qq行,依次表示每一个问题的答案。

如果不需要建设任何道路,输出0;如果无论如何也无法完成,输出INF。

样例
输入
5 6 3
1 2 4
2 3 4
3 1 4
1 4 3
2 4 3
3 4 3
3 1 2 3
4 1 2 3 5
2 5 5
输出
3
INF
0
解释
如果直接修复1到2和2到3的两条路,可使1,2,3三个城市两两恢复通行,需要4天。然而,如果修复1到4,2到4和3到4的三条路,只需3天就可以了。

由于5与其余城市都没有路,所以不可能使1,2,3,5四个城市恢复通行。然而,如果只需要5能到达自己,则不需要修复任何道路。

子任务
除样例外,所有的道路和问题都是随机生成的。

对于所有的数据,1≤ai,bi≤n,0≤ci≤1091≤ai,bi≤n,0≤ci≤109。

令∑k∑k表示某个输入数据当中所有问题的kk值的总和。

对于30%的数据,n≤120,m≤300,q≤300,∑k≤36000n≤120,m≤300,q≤300,∑k≤36000。
对于另外20%的数据,n≤400,m≤500000,q≤200000,∑k≤1000000n≤400,m≤500000,q≤200000,∑k≤1000000。
对于另外20%的数据,n≤2000,m≤4000,q≤200000,∑k≤1000000n≤2000,m≤4000,q≤200000,∑k≤1000000。
对于100%的数据,n≤200000,m≤500000,q≤200000,∑k≤1000000n≤200000,m≤500000,q≤200000,∑k≤1000000。
每一档分数的数据之间均有梯度,且均匀分布着一半的数据保证q≤10q≤10。

思路

考场上虚树写挂了,只有50

其实我们并不需要把虚树建出来,甚至不用dfs序,对于每个询问暴力求lca就行

这里给一个比较妙的做法:维护并查集同时维护最大值,代码量会少很多

代码

#include<bits/stdc++.h>
using namespace std;
const int N=5e5+77,inf=0x3f3f3f3f;
int fa[N],yjy[N],siz[N];
struct A
{int x,y,c;
}a[N];
bool operator <(const A x,const A y)
{return x.c<y.c;
}
int main()
{int n,m,q; scanf("%d%d%d",&n,&m,&q);for(int i=1; i<=m; i++) scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].c);for(int i=1; i<=n; i++){fa[i]=i; siz[i]=1;}memset(yjy,0x3f,sizeof(yjy));sort(a+1,a+m+1);for(int i=1; i<=m; i++){int x=a[i].x,y=a[i].y,w=a[i].c;while(yjy[x]!=inf) x=fa[x]; while(yjy[y]!=inf) y=fa[y];if(x!=y){if(siz[x]<siz[y]){fa[x]=y; yjy[x]=w; siz[y]+=siz[x];}else{fa[y]=x; yjy[y]=w; siz[x]+=siz[y];}}}while(q--){int k,c,ans=0;scanf("%d%d",&k,&c);while(--k){int d; scanf("%d",&d);int x=c,y=d;while(x!=y){if(yjy[x]>yjy[y]) swap(x,y); ans=max(ans,yjy[x]);if(ans==inf) break;x=fa[x];}c=d;}if(ans<inf) printf("%d\n",ans); else printf("INF\n");}
}

【noi.ac #596】road相关推荐

  1. 【noi.ac#1771】ball

    题目 Description 给出 n 条平行的纵向轨道 ,有 m 根横向的短棒支在一些相邻轨道上.如果在某个轨道顶端释放一个小球,它会沿着这个轨道一直下落,一旦碰到短棒就会沿着短棒滚到相邻轨道并继续 ...

  2. 【VC/AC论文】Any-to-Many Voice Conversion withLocation-Relative Sequence-to-Sequence Modeling

    文章目录 Abstract Introduction Related Work Attention mechanisms in seq2seq model | seq2seq模型中的注意机制 A se ...

  3. 【noi.ac】163.仰望星空

    题目 [问题描述] 每天晚上,LYC都会在市少年宫的操场上仰望星空.时间久了,他便开始觉得无聊. 于是LYC选择了第一颗星星,以它为圆心画了一个半径为RR的圆并将星星分为两类,其中圆外不包括边界上的点 ...

  4. 【noi 2.5_7834】分成互质组(dfs)

    有2种dfs的方法: 1.存下每个组的各个数和其质因数,每次对于新的一个数,与各组比对是否互质,再添加或不添加入该组. 2.不存质因数了,直接用gcd,更加快.P.S.然而我不知道为什么RE,若有好心 ...

  5. 【NOI题库】【NOIP2016PJ猜题】雇佣兵

    雇佣兵 [问题描述] 雇佣兵的体力最大值为M,初始体力值为0,战斗力为N,拥有X个能量元素.(0 < M, N, X ≤ 10,000) 当雇佣兵的体力值恰好为M时,才可以参加一个为期M天的战斗 ...

  6. 【noi 2.5_8465】马走日(dfs)

    最基本的dfs.这代码理应超时的,我也不知为何AC了......打表我都放弃了,因为最大的数据真的要跑很久...... 1 #include<cstdio> 2 #include<c ...

  7. 【华为 AC+AP】

    华为AC+AP项目配置 让每个 AP 拥有IP地址,但是AP的数量非常多,并且分布广泛,又不能挨个挨个去配置,所以,我们可以通过 DHCP 的方式,让每个 AP 自动获取IP地址. 一.配置DHCP服 ...

  8. 【noi 2.6_9284】盒子与小球之二(DP)

    题意:有N个有差别的盒子和分别为A个和B个的红球和蓝球,盒子内可空,问方案数. 解法:我自己打的直接用了求组合C的公式,把红球和蓝球分开看.对于红球,在N个盒子可放任意个数,便相当于除了A个红球还有N ...

  9. 【NOI online 2】游戏【二项式反演】【树上背包】

    题意:一棵n=2mn=2mn=2m个点的树,mmm个白点和mmm个黑点.对于k∈[0,n]k\in [0,n]k∈[0,n],求出 把点黑白两两配对使得恰好有kkk对点有祖孙关系 的方案数 模9982 ...

最新文章

  1. led显示屏建设标准_户外LED显示屏3大防护标准_显示屏应对恶劣天气?
  2. Excel如何快速清除单元格所有内容
  3. 奇妙的Base64编码
  4. 【eclipse】配置author和commiter,git配置user.name和user.email
  5. LSTM里的dropout
  6. 软件工程---07.设计与实现
  7. mysql linux c tar_linux下mysql的tar包离线安装
  8. java关于Timer schedule执行定时任务 1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等...
  9. 权威指南之脚本化jquery
  10. NWT失败反省:谁给汝之权力,竟然敢要吾走人?
  11. 移动云招聘,加入我们,搞点大事~
  12. 电脑在线时间调整服务器是多少,电脑时间校准服务器
  13. ASP.NET公司企业网站源码
  14. flash移植到android上,Flash Web Game移植到Android平台需要注意的地方
  15. Ibeacon一维小项目
  16. 易点易动【设备管理】产品全新上线
  17. Linux 系统进程守护工具 cesi + superviosr
  18. 基于PID的车辆ABS建模与仿真
  19. 完美解决html表格表头固定存在的问题
  20. Reverse-it

热门文章

  1. java实现双色球生成器
  2. 第3-5课:24 点计算器
  3. Matlab在win10运行不出图片,win10系统网页图片加载不出来的六种原因及解决方法...
  4. 利用arcscene将shape文件拉伸后三维展示
  5. 博客的WordPress地址(URL)修改后博客打不开解决方法
  6. OBS录屏低音过重/背景嗡嗡声的解决方法
  7. python 实现126邮箱登录
  8. oracle rfs进程过多,Oracle物理备库RFS进程消失,不能启动--解决
  9. 万能页面加载loading
  10. 华为云访问密钥AK\SK获取