zoukankan      html  css  js  c++  java
  • HDU 2112

    HDU 2112

    Dijsktra + map

    把字符串映射成int型即可

    注意起点和终点可能重合,这样之间输出0,或者输出 dist[0]

    注意双向边,重边

    #include <bits/stdc++.h>
    using namespace std;
    #define endl '
    '
    const int N = 200,INF = 0x3f3f3f3f;
    int n,m,dist[N],g[N][N],a,b;
    bool st[N];
    void dij(int x){
        memset(dist,0x3f,sizeof dist);
        memset(st,0,sizeof st);
        dist[x] = 0;
        for(int i = 0;i < n; ++i){
            int t = -1;
            for(int j = 0;j < n; ++j){
                if(!st[j] && (t == -1 || dist[j] < dist[t]))
                     t = j;
            }
            st[t] = 1;
            for(int j = 0;j < n; ++j){
                dist[j] = min(dist[j],dist[t] + g[t][j]);
            }
        }
    }
    int main() {
        ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
        while(cin >> m && m != -1) {
            n = 0;
            memset(g,0x3f,sizeof g);
            string starti,endi,s1,s2;
            map<string,int> dict;
            int time;
            cin >> starti >> endi;
            dict[starti] = n++;
            if(dict.count(endi) == 0) dict[endi] = n++;
            for(int i = 0;i < m; ++i) {
                cin >> s1 >> s2 >> time;
                if(dict.count(s1) == 0) dict[s1] = n++;
                if(dict.count(s2) == 0) dict[s2] = n++;
                a = dict[s1],b = dict[s2];
                g[a][b] = g[b][a] = min(g[a][b],time);
            }
            if(dict[starti] == dict[endi]) {
                cout << "0" << endl;
                continue;
            }
            dij(0);
            if(dist[1] < INF) cout << dist[1];
            else cout << "-1";
            cout << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    重定向请求
    json处理
    post请求
    get请求
    提交cookie登录
    进击的Python【第三章】:Python基础(三)
    进击的Python【第二章】:Python基础(二)
    进击的Python【第一章】:Python背景初探与Python基础(一)
    java 内存分析
    java--循环练习
  • 原文地址:https://www.cnblogs.com/lukelmouse/p/12422352.html
Copyright © 2011-2022 走看看