zoukankan      html  css  js  c++  java
  • CCF_201612-4_交通规划

    http://115.28.138.223/view.page?gpid=T44

    好像也没想象中的那么难,没办法,当初连个优先队列dij都不会写= =

    在优先队列dij算法上加上相等的时候的处理就可以了。

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #include<vector>
    #include<queue>
    using namespace std;
    
    struct node
    {
        int pos,cost;
        node(int a,int b):pos(a),cost(b){};
        friend bool operator <(node x,node y)
        {
            return x.cost > y.cost;
        }
    };
    struct edge
    {
        int to,cost;
        edge(int a,int b):to(a),cost(b){};
    };
    vector<edge> v[10005];
    bool vis[10005] = {0};
    int dis[10005],cost[10005],n,m;
    
    void dij()
    {
        memset(dis,0x3f,sizeof(dis));
        memset(cost,0x3f,sizeof(cost));
        dis[0] = 0;
        cost[0] = 0;
        priority_queue<node> q;
        q.push(node(1,0));
        while(!q.empty())
        {
            int now = q.top().pos;
            if(vis[now])    continue;
            vis[now] = 1;
            for(int i = 0;i < v[now].size();i++)
            {
                int to = v[now][i].to,c = v[now][i].cost;
                if(vis[to]) continue;
                if(dis[to] > dis[now]+c)
                {
                    dis[to] = dis[now]+c;
                    cost[to] = c;
                    q.push(node(to,dis[to]));
                }
                else if(dis[to] == dis[now]+c)    cost[to] = min(cost[to],c);
            }
        }
    }
    
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i = 1;i <= m;i++)
        {
            int a,b,c;
            scanf("%d%d%d",&a,&b,&c);
            v[a].push_back(edge(b,c));
            v[b].push_back(edge(a,c));
        }
        dij();
        int ans = 0;
        for(int i = 2;i <= n;i++)   ans += cost[i];
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    网易前端规范
    为什么很多网页里不直接用script标签引入JS文件,而是通过函数新建script,然后添加属性,再来引入呢?
    jQuery报错:Uncaught ReferenceError: $ is not defined
    PHP获得网页源码
    JAVA获取网页源码
    ctci(1)
    Hanoi
    计算多选框打勾的数目
    ThreadLocalClient小应用
    ajax动态刷新下拉框
  • 原文地址:https://www.cnblogs.com/zhurb/p/6056109.html
Copyright © 2011-2022 走看看