CCF认证 2016-09 交通规划
来源:互联网 发布:淘宝50字好评 编辑:程序博客网 时间:2024/05/17 15:17
题目链接:http://118.190.20.162/view.page?gpid=T44
读懂题意后是要求在单源最短路的基础上找总长最小的路径
在Dijkstra算法的基础上再加一些判断花费最小的语句就可以了
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<queue>using namespace std;const int N=1e4+10;const int inf=1e8-1;struct edge{int to;int cost;edge(){}edge(int a,int b){to=a;cost=b;}};struct node{int id;int cost;node(int a,int b){id=a;cost=b;}bool operator < (const node &u) const{return cost>u.cost;}};vector<edge> g[N];int dist[N],f[N]; //f[]数组存储到每个节点的单条路径花费int n,m;void init(){for(int i=0;i<=n;i++)dist[i]=f[i]=inf;dist[1]=0;}void dj(){priority_queue<node> q;q.push(node(1,0));while(!q.empty()){node x=q.top();q.pop();int u=x.id;int t=x.cost;int l=g[u].size();for(int i=0;i<l;i++){if(dist[g[u][i].to]>dist[u]+g[u][i].cost||dist[g[u][i].to]==dist[u]+g[u][i].cost&&f[g[u][i].to]>g[u][i].cost) //更短路或者是同短路加花费更小{dist[g[u][i].to]=dist[u]+g[u][i].cost;q.push(node(g[u][i].to,dist[g[u][i].to]));f[g[u][i].to]=g[u][i].cost; //更新花费}}}}int main(){int a,b,c;scanf("%d%d",&n,&m);for(int i=0;i<m;i++){scanf("%d%d%d",&a,&b,&c);g[a].push_back(edge(b,c));g[b].push_back(edge(a,c));}init();dj();int ans=0;for(int i=2;i<=n;i++)ans+=f[i];printf("%d\n",ans);return 0;}
阅读全文
0 0
- CCF认证 2016-09 交通规划
- ccf-2016-09-4-交通规划
- ccf认证交通规划0分
- CCF-CSP 交通规划 JAVA 2016-09-04 100分
- CCF-交通规划
- CCF交通规划
- CCF 交通规划
- ccf 交通规划
- ccf交通规划
- CCF交通规划
- CCF 交通规划
- ccf 交通规划
- CCF-20160904-交通规划
- ccf 交通规划
- CCF 201612-4 交通规划
- CCF 201609-4 交通规划
- CCF 201612-4 交通规划
- 第八次ccf-交通规划
- 跟随手指的小球
- windows下安装Scrapy
- 循环的问题
- XRecyclerView上拉下拉
- LeetCode.676 Implement Magic Dictionary
- CCF认证 2016-09 交通规划
- UDP编程
- C++——static静态成员
- 14 个你可能不知道的 JavaScript 调试技巧
- 一个类文件如何继承其它文件的类?
- 朴素贝叶斯学习 续2
- unity 《专题系列》资源打包 Asset Bundles 第三节 Asset Bundles 加载
- webpack知识学习第2天,配置类型 条目和上下文 输出
- 第十周LeetCode