记录编号 300963 评测结果 AAAAAAAAAA
题目名称 KZ菌的星际旅行 最终得分 100
用户昵称 Gravatarkito 是否通过 通过
代码语言 C++ 运行时间 0.818 s
提交时间 2016-08-29 16:35:39 内存使用 89.54 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define	fcl	fclose(stdin);	fclose(stdout);	return 0
struct ss{
	int to,next,nazi;
}edge[2000010];
int head[10000010]={0},tot=0;
inline void AddEdge(const int& a,const int& b,const int& c){
	edge[++tot].to=b;
	edge[tot].nazi=c;
	edge[tot].next=head[a];
	head[a]=tot;
}
int n,m;
int dis[10000010];
struct sss{
	int id,dis;
	sss(const int& a,const int& b){
		id=a;	dis=b;
	}
	bool operator < (const sss& a) const{
		return dis>a.dis;
	}
}v(0,0);
priority_queue<sss> Que;
void Dijs(){
	memset(dis,0x7f,sizeof(dis));
	dis[1]=0;
	Que.push(sss(1,0));
	int x,y;
	while(!Que.empty()){
		v=Que.top();
		Que.pop();
		if(v.dis!=dis[v.id]) continue;
		x=head[v.id];
		while(x){
			y=edge[x].to;
			if(dis[y]>v.dis+edge[x].nazi){
				dis[y]=v.dis+edge[x].nazi;
				Que.push(sss(y,dis[y]));
			}
			x=edge[x].next;
		}
	}
}

int main(){
	freopen("KZstartravelillu.in","r",stdin);
	freopen("KZstartravelillu.out","w",stdout);
	
	scanf("%d%d",&n,&m);
	int a,b,c;
	for(int i=1;i<=m;++i){
		scanf("%d%d%d",&a,&b,&c);
		AddEdge(a,b,c);
		AddEdge(b,a,c);
	}
	Dijs();
	dis[n]<<=1;
	printf("%d",dis[n]);
	fcl;
}
		
//end