【rqnoj 341】星门跳跃

来源:互联网 发布:22周三维彩超正常数据 编辑:程序博客网 时间:2024/06/08 12:13

题解:

        bellman-ford算法简单应用

#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int maxn=30000+10;struct node{int v,w;};vector<node> a[maxn];int dist[maxn];int n,m;void insert(int u,int v,int w){node t;t.v=v;t.w=w;a[u].push_back(t);t.v=u;a[v].push_back(t);  }void readdata(){scanf("%d%d",&n,&m);int u,v,w;for(int i=0;i<m;i++){scanf("%d%d%d",&u,&v,&w);insert(u,v,w);}}void bellmanford(){memset(dist,0x3f,sizeof(dist));dist[1]=0;bool flag=true;while(flag){flag=false;for(int x=1;x<=n;x++){for(int j=0;j<a[x].size();j++){int v=a[x][j].v;int w=a[x][j].w;if(dist[x]+w<dist[v]){dist[v]=dist[x]+w;flag=true;}}}}printf("%d\n",dist[n]);}int main(){readdata();bellmanford();return 0;}


0 0
原创粉丝点击