2013年11月7日 星期四
[ZJ] a833: 3、沙漠旅行
#include<stdio.h>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
struct P{
int x,y;
friend bool operator < (P a,P b){
return a.y>b.y;
}
}in,out;
vector<P> s[500005];
priority_queue<P> que;
int v[500005]={0},d[500005];
int main(){
int n,m,i,x,y,z;
scanf("%d%d",&n,&m);
for(i=2;i<=n;i++)
d[i]=1e8;
for(i=0;i<m;i++){
scanf("%d%d%d",&x,&y,&z);
s[x].push_back((P){y,z});
}
d[1]=0;
for(i=0;i<s[1].size();i++)
que.push(s[1][i]);
while(que.size()){
out=que.top();
que.pop();
if(v[out.x]) continue;
v[out.x]=1,d[out.x]=out.y;
for(i=0;i<s[out.x].size();i++){
in=out;
in.x=s[out.x][i].x;
if(v[in.x]) continue;
in.y+=s[out.x][i].y;
que.push(in);
}
}
printf("%d\n",d[n]);
}
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言