标签:
#include <queue>#include <cstring>#include <cstdio>using namespace std;const int maxn = 1000 + 10;const int maxe = 2000 + 10;struct mNode{int u,c;mNode(int _u = 0,int _c = 0):u(_u),c(_c){}bool operator < (const mNode & a)const{return c > a.c;}};struct Edge{int v,c;Edge(int _v = 0,int _c = 0):v(_v),c(_c){}};vector<Edge> e[maxe];bool vis[maxn];int d[maxn];void Dijkstra(int s){memset(vis,0,sizeof(vis));memset(d,0x3f,sizeof(d));priority_queue<mNode> q;d[s] = 0;q.push(mNode(s,0));mNode tmp;while(!q.empty()){tmp = q.top();q.pop();int u = tmp.u;if(vis[u]) continue;vis[u] = 1;for(int i = 0;i < e[u].size();++i){Edge & me = e[u][i];if(!vis[me.v] && d[me.v] > d[u] + me.c){d[me.v] = d[u] + me.c;q.push(mNode(me.v,d[me.v]));}}}}inline void addedge(int u,int v,int c){e[u].push_back(Edge(v,c));}int main(){int n,t,a,b,c;scanf("%d%d",&t,&n);for(int i = 0;i < t; ++i){scanf("%d%d%d",&a,&b,&c);addedge(a,b,c);addedge(b,a,c);}Dijkstra(n);printf("%d\n",d[1]);return 0;}
[2016-04-02][POJ][2387][Til the Cows Come Home]
标签:
原文地址:http://www.cnblogs.com/qhy285571052/p/fa56a3d106dbda764c3e4164a5177926.html