当前位置: 首页 > news >正文

大学生免费ppt网站/短链接在线生成免费

大学生免费ppt网站,短链接在线生成免费,广西建设厅官方网站电话,衡水做网站优化https://www.luogu.org/problem/P2245 题目描述 \text{sideman}sideman 做好了回到 \text{Gliese}Gliese 星球的硬件准备,但是 \text{sideman}sideman 的导航系统还没有完全设计好。为了方便起见,我们可以认为宇宙是一张有 NN 个顶点和 MM 条边的带权无向…

https://www.luogu.org/problem/P2245
题目描述
\text{sideman}sideman 做好了回到 \text{Gliese}Gliese 星球的硬件准备,但是 \text{sideman}sideman 的导航系统还没有完全设计好。为了方便起见,我们可以认为宇宙是一张有 NN 个顶点和 MM 条边的带权无向图,顶点表示各个星系,两个星系之间有边就表示两个星系之间可以直航,而边权则是航行的危险程度。

\text{sideman}sideman 现在想把危险程度降到最小,具体地来说,就是对于若干个询问 (A, B)(A,B),\text{sideman}sideman 想知道从顶点 AA 航行到顶点 BB 所经过的最危险的边的危险程度值最小可能是多少。作为 \text{sideman}sideman 的同学,你们要帮助 \text{sideman}sideman 返回家园,兼享受安全美妙的宇宙航行。所以这个任务就交给你了。

输入格式
第一行包含两个正整数 NN 和 MM,表示点数和边数。

之后 MM 行,每行三个整数 AA,BB 和 LL,表示顶点 AA 和 BB 之间有一条边长为 LL 的边。顶点从 11 开始标号。

下面一行包含一个正整数 QQ,表示询问的数目。

之后 QQ 行,每行两个整数 AA 和 BB,表示询问 AA 和 BB 之间最危险的边危险程度的可能最小值。

输出格式
对于每个询问, 在单独的一行内输出结果。如果两个顶点之间不可达, 输出 \text{impossible}impossible。

输入输出样例
输入 #1 复制
4 5
1 2 5
1 3 2
2 3 11
2 4 6
3 4 4
3
2 3
1 4
1 2
输出 #1 复制
5
4
5
说明/提示
对于 40%40% 的数据,满足 N \leq 1000, M \leq 3000, Q \leq 1000N≤1000,M≤3000,Q≤1000。

对于 80%80% 的数据,满足 N \leq 10000, M \leq 10^5, Q \leq 1000N≤10000,M≤10
5
,Q≤1000。

对于 100%100% 的数据,满足 N \leq 10^5, M \leq 3 \times 10^5, Q \leq 10^5, L \leq 10^9N≤10
5
,M≤3×10
5
,Q≤10
5
,L≤10
9
。数据不保证没有重边和自环。
思路:题目意思就是选择一条从uuuvvv的路径,使得这条路径上权值最大的权值是所有情况中最小的。此时不难联想到最小生成树,因为克鲁斯卡尔算法就是以贪心的策略,保证每次选出的边都是当前权值最小的。那么我们先建立出最小生成树,此时问题就转换了找uuuvvv的树链上的最大值,用LCALCALCA就可以解决辣。即在倍增求LCALCALCA算法中用一个disdisdis数组同样倍增的来记录。当然要是不嫌麻烦的话,也可以用树剖+线段树解决。

#include<bits/stdc++.h>
using namespace std;const int maxn=1e5+5;
const int maxm=3e5+5;struct edge
{int from,to,nxt,dis;bool operator <(const edge &a)const{return dis<a.dis;}
};edge e[maxm];
edge Edge[maxn<<1];
int head[maxn],f[maxn],fa[maxn][30],dis[maxn][30],deep[maxn],a[maxn],bs[30];
int n,m,tot,cnt;void dfs(int u,int fath)
{deep[u]=deep[fath]+1;fa[u][0]=fath;dis[u][0]=a[u];for(int i=1;i<=20;i++){fa[u][i]=fa[fa[u][i-1]][i-1];dis[u][i]=max(dis[u][i-1],dis[fa[u][i-1]][i-1]);}int to;for(int i=head[u];i;i=Edge[i].nxt){to=Edge[i].to;if(to!=fath)a[to]=Edge[i].dis,dfs(to,u);}
}int work(int u,int v)
{if(deep[u]<deep[v])swap(u,v);int tmp=deep[u]-deep[v];int ans=0;for(int i=20;i>=0;i--)if(bs[i]&tmp)ans=max(ans,dis[u][i]),u=fa[u][i];if(u==v)return ans;for(int i=20;i>=0;i--)if(fa[u][i]!=fa[v][i])ans=max(ans,max(dis[u][i],dis[v][i])),u=fa[u][i],v=fa[v][i];return max(ans,max(dis[u][0],dis[v][0]));
}void addedge(int u,int v,int dis)
{Edge[++cnt].to=v,Edge[cnt].dis=dis,Edge[cnt].nxt=head[u],head[u]=cnt;
}void init()
{for(int i=1;i<=n;i++)f[i]=i;for(int i=0;i<=20;i++)bs[i]=1<<i;
}int father(int x)
{return f[x]==x?x:f[x]=father(f[x]);
}bool check(int x,int y)
{int fx=father(x),fy=father(y);if(fx!=fy){f[fx]=fy;return 1;}return 0;
}int main()
{scanf("%d%d",&n,&m);init();int u,v,dis;for(int i=0;i<m;i++)scanf("%d%d%d",&e[i].from,&e[i].to,&e[i].dis);sort(e,e+m);for(int i=0;i<m;i++){if(check(e[i].from,e[i].to))addedge(e[i].from,e[i].to,e[i].dis),addedge(e[i].to,e[i].from,e[i].dis);}for(int i=1;i<=n;i++){if(!deep[i])dfs(i,0);}int q;scanf("%d",&q);while(q--){scanf("%d%d",&u,&v);if(father(u)!=father(v))printf("impossible\n");elseprintf("%d\n",work(u,v));}return 0;
}
http://www.lbrq.cn/news/1291663.html

相关文章:

  • 二级网站建设/温州企业网站排名优化
  • b2c电商网站制作/seo怎么去优化
  • 做仿网站的书/企业管理
  • 如何建设交流网站的论文/推广关键词
  • 网站内容添加/软文广告文案
  • 重庆工程建设信息网证件查询/长沙网站seo哪家公司好
  • 个体工商户 经营性网站/seo推广技术
  • 蓟县做网站/成都正规搜索引擎优化
  • dw制作简单网站/链接生成器
  • 站群系列服务器做视频网站/企业网站建设的重要性
  • 怎么创网站/如何做到精准客户推广
  • 网站建设实验原理/竞价推广开户
  • 高职两学一做专题网站/搜索引擎广告优化
  • 网站个性化/合肥网站关键词排名
  • 保定网站推广/微信营销典型案例
  • 郑州做网站和域名/5118站长工具
  • wordpress微信登录插件下载失败/seo和sem的区别是什么?
  • 国内做批发的网站有哪些/白杨seo教程
  • wordpress中国可以上吗/沈阳seo排名收费
  • 微享网络网站建设/做一个公司网站要多少钱
  • 网站开发用什么系统比较好/响应式模版移动优化
  • 做的烂的网站/app开发用什么软件
  • 网站建设术语/搜索引擎调词工具
  • 个人网站可以做百度推广么/东莞建设企业网站
  • 怎样制作时时彩网站做 裙 o/个人接外包的网站
  • 潍坊网站制作套餐/腾讯朋友圈广告投放价格
  • 网站建设基本流程是什么/百度网盘官网登陆入口
  • wap网站设计方案/百度词条搜索排行
  • mac可以做网站开发吗/湖北seo推广
  • 怎么做一种网站为别人宣传/西安网络优化哪家好
  • Matplotlib绘制各种图参考
  • Qt 事件处理机制深入剖析
  • Rabbit安装
  • 关键成功因素法(CSF)深度解析:从战略目标到数据字典
  • 《C++》函数内联,auto关键字
  • BERT 的“池化策略”