poj 2387 最短路径Dijkstra

来源:互联网 发布:剑网三dx11优化版 编辑:程序博客网 时间:2024/05/29 19:00
#include <iostream>#include <vector>#include <queue>using namespace std;#define INF 0x3fffffff#define NUM 1005#define NUM2 2005struct Edge{int to;int cost;}edge;vector<Edge> edges[NUM];int visited[NUM];int dist[NUM];void init(){for(int i=0;i<NUM;i++){visited[i]=0;dist[i]=INF;}}int main(){int N,T;scanf("%d %d",&T,&N);for(int i=0;i<T;i++){int from,to,cost;scanf("%d %d %d",&from,&to,&cost);struct Edge tmp;tmp.to=to;tmp.cost=cost;edges[from].push_back(tmp);tmp.to=from;tmp.cost=cost;edges[to].push_back(tmp);}init();queue<int> q;q.push(N);dist[N]=0;while(!q.empty()){int from=q.front();q.pop();for(int j=0;j<edges[from].size();j++){int to=edges[from][j].to;int cost=edges[from][j].cost;if(visited[to]==0){if(dist[to]>dist[from]+cost){dist[to]=dist[from]+cost;q.push(to);}}}}cout<<dist[1]<<endl;return 0;}