#include<iostream>
#include<cstring>
#include<queue>
#include<cstdio>
using namespace std;
#define INF 0x7FFFFFFF
#define N 150000
#define M 2000000
typedef struct node
{
int u;
int len;
struct node *nex;
}NODE;
NODE edg[M],*head[N];
int hh[N],dis[N];
int cnt,n;
void init()
{
int i;
cnt=0;
for(i=0;i<=n;i++)
{
head[i]=0;
hh[i]=0;
dis[i]=INF;
}
}
void insert(int a,int b,int c)
{
edg[cnt].u=b;
edg[cnt].len=c;
edg[cnt].nex=head[a];
head[a]=&edg[cnt++];
}
int SPFA()
{
int i,j;
int t;
queue<int>que;
hh[1]=1; dis[1]=0;
que.push(1);
while(!que.empty())
{
t=que.front(); que.pop();
hh[t]=0;
for(NODE *p=head[t]; p ; p=p->nex)
{
if(dis[p->u]>dis[t]+p->len)
{
dis[p->u]=dis[t]+p->len;
if(hh[p->u]==0)
{
que.push(p->u);
hh[p->u]=1;
}
}
}
}
return dis[n];
}
int main()
{
int i,j;
int a,b,c;
int m;
while(~scanf("%d%d",&n,&m))
{
init();
while(m--)
{
scanf("%d%d%d",&a,&b,&c);
insert(a,b,c);
}
printf("%d\n",SPFA());
}
return 0;
}
邻接表存图。。。
最新推荐文章于 2022-12-24 17:47:53 发布