#9WA求调
  • 板块P2349 金字塔
  • 楼主50lty12
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/1/20 14:07
  • 上次更新2023/10/24 03:31:27
查看原帖
#9WA求调
649114
50lty12楼主2023/1/20 14:07

RT

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,k,a,b,c,ans,h,t,now,nxt;
int head[1005],dis[1005],minn[10005],u[1005];
priority_queue< pair<int,int> >q;
struct AB{
	int a,b,c,n;
}d[40005];
void cun(int a,int b,int c){
	d[++k].a=a,d[k].b=b,d[k].c=c;
	d[k].n=head[a],head[a]=k;
}
int dijkstra(){
	memset(dis,0x3f,sizeof dis);
	memset(minn,0,sizeof minn);
	dis[1]=0;
	minn[1]=0;
	q.push(make_pair(0,1));
	while(!q.empty()){
		now=q.top().second;
		q.pop();
		if(u[now]) continue;
		u[now]=1;
		for(int i=head[now]; i; i=d[i].n){
			nxt=d[i].b;
			if(dis[nxt]+minn[nxt]>dis[now]+d[i].c+max(minn[now],d[i].c)){
				dis[nxt]=dis[now]+d[i].c;
				minn[nxt]=max(minn[now],d[i].c);
				q.push(make_pair(-dis[nxt],nxt));
			}
		}
	}
	return dis[n]+minn[n];
}
signed main(){
    scanf("%lld%lld",&n,&m);
    for(int i=1; i<=m; i++){
    	scanf("%lld%lld%lld",&a,&b,&c);
    	cun(a,b,c);
    	cun(b,a,c);
	}
	ans=dijkstra();
	printf("%lld",ans);
    return 0;
}

2023/1/20 14:07
加载中...