hihocoder 1093

来源:互联网 发布:阿里云 ddns 编辑:程序博客网 时间:2024/06/05 19:53
#include <iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<queue>using namespace std;const int INF=1100000000;const int mx=100000+1000;struct edge{    int to,cost;}e;vector<edge> g[mx];int n,m,s,t,d[mx];bool used[mx];void add_edge(int u,int v,int cost){    e.to=v;e.cost=cost;    g[u].push_back(e);    e.to=u;    g[v].push_back(e);}void spfa(int s){    memset(used,0,sizeof(used));    fill(d,d+n+10,INF);    d[s]=0;used[s]=true;    queue<int> que;    que.push(s);    while(!que.empty())    {        int u=que.front();        que.pop();used[u]=false;        for(int i=0;i<g[u].size();i++)        {            int v=g[u][i].to;            if(d[v]>d[u]+g[u][i].cost)            {                d[v]=d[u]+g[u][i].cost;                if(!used[v])                {                    que.push(v);                    used[v]=true;                }            }        }    }}int main(){    scanf("%d%d%d%d",&n,&m,&s,&t);    int u,v,cost;    for(int i=0;i<m;i++)    {        scanf("%d%d%d",&u,&v,&cost);        add_edge(u,v,cost);    }    spfa(s);    printf("%d\n",d[t]);    return 0;}

SPFA

0 0