蓝桥杯 算法训练 最短路
2014-03-16 12:29
204 查看
问题描述
给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。
输入格式
第一行两个整数n, m。
接下来的m行,每行有三个整数u, v, l,表示u到v有一条长度为l的边。
输出格式
共n-1行,第i行表示1号点到i+1号点的最短路。
样例输入
3 3
1 2 -1
2 3 -1
3 1 2
样例输出
-1
-2
数据规模与约定
对于10%的数据,n = 2,m = 2。
对于30%的数据,n <= 5,m <= 10。
对于100%的数据,1 <= n <= 20000,1 <= m <= 200000,-10000 <= l <= 10000,保证从任意顶点都能到达其他所有顶点。
给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。
输入格式
第一行两个整数n, m。
接下来的m行,每行有三个整数u, v, l,表示u到v有一条长度为l的边。
输出格式
共n-1行,第i行表示1号点到i+1号点的最短路。
样例输入
3 3
1 2 -1
2 3 -1
3 1 2
样例输出
-1
-2
数据规模与约定
对于10%的数据,n = 2,m = 2。
对于30%的数据,n <= 5,m <= 10。
对于100%的数据,1 <= n <= 20000,1 <= m <= 200000,-10000 <= l <= 10000,保证从任意顶点都能到达其他所有顶点。
//最短路径 #include<iostream> #include<cstdio> #include<vector> using namespace std; const int N=20002; const int INF=10000000; vector<int> map ; vector<int> maplen ;//这个跟map 相结合构成一个图 int dist ; int vis ={0}; int di ; int v=0; int n,m; void dijkstra(int k) { int i,j,p,smin; for(i=0;i<map[k].size();i++) { dist[map[k][i]]=maplen[k][i]; di[v++]=map[k][i]; } dist[k]=0; vis[k]=1; for(p=1;p<=n;p++) { smin=INF; j=-1; int kj; for(i=0;i<v;i++) { if(vis[di[i]]==0&&dist[di[i]]<smin) { j=di[i]; smin=dist[di[i]]; } } if(j==-1) break; else { //di.erase(itr+kj); vis[j]=1; for(i=0;i<map[j].size();i++) { if(vis[map[j][i]]==0&&(smin+maplen[j][i]<dist[map[j][i]])) { if(dist[map[j][i]]==INF) di[v++]=map[j][i]; dist[map[j][i]]=smin+maplen[j][i]; } } } } } int main() { //freopen("zuiduan1.in","r",stdin); scanf("%d%d",&n,&m); int i; for(i=1;i<=n;i++) { dist[i]=INF; } int ai,aj,ad; for(i=0;i<m;i++) { scanf("%d%d%d",&ai,&aj,&ad); map[ai].push_back(aj); maplen[ai].push_back(ad); //cout<<ai<<" "<<aj<<" "<<ad<<endl; } dijkstra(1); for(i=2;i<=n;i++) { cout<<dist[i]<<endl; } return 0; }
相关文章推荐
- 算法训练 最短路 蓝桥杯
- 蓝桥杯 算法训练 最短路
- 蓝桥杯算法训练——最短路(SFPA)
- 算法-蓝桥杯-算法训练 最短路(JAVA)
- 蓝桥杯 算法训练 最短路 [ 最短路 bellman ]
- 蓝桥杯 算法训练 最短路
- 蓝桥杯 - 算法训练 - ALGO - 5 最短路(spfa)
- 蓝桥杯ALGO-5算法训练 最短路
- 蓝桥杯 算法训练 最短路
- 蓝桥杯 - 算法训练 最短路 Bellman-Ford算法 C语言实现
- 蓝桥杯 ALGO-5 算法训练 最短路
- 蓝桥杯 算法训练---最短路(spfa算法)
- 蓝桥杯竞赛题——算法训练【最短路】
- 蓝桥杯, 算法训练 最短路 (SPFA)
- 蓝桥杯算法训练 最短路
- 蓝桥杯 算法训练 最短路(最短路模板)
- 蓝桥杯-算法训练-最短路
- 蓝桥杯 算法训练 最短路 (Bellman-Ford算法)
- 蓝桥杯 - 算法训练 最短路(spfa)
- 蓝桥杯- 算法训练 最短路