zoukankan      html  css  js  c++  java
  • Til the Cows Come Home POJ2387 (dijkstra+优先队列模版)

    #include<iostream>
    #include<cmath>
    #include<algorithm>
    #include<cstring>
    #include<stack>
    #include<cstdio>
    #include<queue>
    #include<functional>
    #include<map>
    #include<set>
    #define se second
    #define fi first
    #define ll long long
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define Pii pair<int,int>
    #define pb push_back
    #define ull unsigned long long
    #define fio ios::sync_with_stdio(false);cin.tie(0)
    using namespace std;
    const double pi=acos(-1.0);
    const ull base=163;
    const int N =4e3+5;
    priority_queue<Pii,vector<Pii>,greater<Pii> >que;
    int head[N];
    int nx[N];
    int to[N];
    int len[N];
    int tot=1;
    int t,n;
    int dis[N];
    void add(int u,int v,int w){
        to[tot]=v;
        len[tot]=w;
        nx[tot]=head[u];
        head[u]=tot++;
    }
    void dij(){
        int INF=0x3f3f3f3f;
        fill(dis+1,dis+n+1,INF);
        que.push(make_pair(0,1));
        dis[1]=0;
        while(!que.empty()){
            Pii now=que.top();que.pop();
            int u=now.se;
            if(dis[u]<now.fi)continue;
            for(int i=head[u];i;i=nx[i]){
                int v=to[i];
                if(dis[v]>dis[u]+len[i]){
                    dis[v]=dis[u]+len[i];
                    que.push(make_pair(dis[v],v));
                }
            }
        }
    }
    int main(){
        fio;
        cin>>t>>n;
        for(int i=0;i<t;i++){
            int u,v,w;
            cin>>u>>v>>w;
            add(u,v,w);
            add(v,u,w);
        }
        dij();
        cout<<dis[n];
        return 0;
    }
  • 相关阅读:
    CheckBox循环删除代码
    最小二乘法原理
    break_VS_continue
    check the sentence &ff
    check_return
    check_FunctionAddress
    while执行两次的问题,已经解决
    CalculationWithDifferenceTpye
    SaveAboutZero
    check_negation
  • 原文地址:https://www.cnblogs.com/Mrleon/p/8719464.html
Copyright © 2011-2022 走看看