【洛谷】P2176 [USACO14FEB]路障Roadblock

梦想不抛弃苦心追求的人,只要不停止追求,你们会沐浴在梦想的光辉之中。再美好的梦想与目标,再完美的计划和方案,如果不能尽快在行动中落实,最终只能是纸上谈兵,空想一番。只要瞄准了大方向,坚持不懈地做下去,才能够扫除挡在梦想前面的障碍,实现美好的人生蓝图。【洛谷】P2176 [USACO14FEB]路障Roadblock,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

题目

#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=7180,MAXM=469891,INF=71806291;
struct Edge{
	int to,next,w;
}e[MAXM];
int n,m,front[MAXN],cnt,d[MAXN],road[MAXN],ego[MAXM];
inline void insert(int u,int v,int w){
	++cnt;e[cnt].next=front[u];e[cnt].to=v;e[cnt].w=w;front[u]=cnt;
}
void ISITJUJUJUJUPAFA(){
	int inq[MAXN];
	queue<int>Huge;
	memset(inq,0,sizeof(inq));
	for(int i=1;i<=n;i++) d[i]=INF;
	Huge.push(1);inq[1]=1;d[1]=0;
	while(!Huge.empty()){
		int u=Huge.front();
		inq[u]=0;Huge.pop();
		for(int i=front[u];i>=0;i=e[i].next){
			int v=e[i].to,w=e[i].w;
			if(d[v]>d[u]+w){
				d[v]=d[u]+w;
				road[v]=u;
				ego[v]=i;
				if(!inq[v]){
					inq[v]=1;
					Huge.push(v);
				}
			}
		}
	}
}
void NOITISHUPAFA(){
	int inq[MAXN];
	queue<int>Huge;
	memset(inq,0,sizeof(inq));
	for(int i=1;i<=n;i++) d[i]=INF;
	Huge.push(1);inq[1]=1;d[1]=0;
	while(!Huge.empty()){
		int u=Huge.front();
		inq[u]=0;Huge.pop();
		for(int i=front[u];i>=0;i=e[i].next){
			int v=e[i].to,w=e[i].w;
			if(d[v]>d[u]+w){
				d[v]=d[u]+w;
				if(!inq[v]){
					inq[v]=1;
					Huge.push(v);
				}
			}
		}
	}
}
int main(){
	scanf("%d%d",&n,&m);
	memset(front,-1,sizeof(front));
	int u,v,w;
	for(int i=1;i<=m;i++){
		scanf("%d%d%d",&u,&v,&w);
		insert(u,v,w);
		insert(v,u,w);
	}
	ISITJUJUJUJUPAFA();
	int zdl=d[n];
	int now=n,HUG=0;
	while(now!=1){
		(e[ego[now]].w)*=2,(e[ego[now]^1].w)*=2;
		NOITISHUPAFA();
		HUG=max(HUG,d[n]);
		(e[ego[now]].w)/=2,(e[ego[now]^1].w)/=2;
		now=road[now];
	}
	printf("%d",HUG-zdl);
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/151015.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!