邻接表存图。。。

来源:互联网 发布:阴阳师自动刷御魂软件 编辑:程序博客网 时间:2024/06/18 10:35
#include<iostream>#include<cstring>#include<queue>#include<cstdio>using namespace std;#define INF 0x7FFFFFFF#define N 150000#define M 2000000typedef 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;}

原创粉丝点击