HDOJ 2544 最短路
2012-03-25 14:42
417 查看
第一次用dijkstra .感觉就是动态规划啊,先找出当前图的最小距离,加入当前结点。在在此节点的基础上更新新的距离,其实真正理解了也是很好想的,刚开始数组地图开的小了map[100][100], 结果WA 了,数组开大点就好。
#include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<vector> #include<cstring> using namespace std; #define maxint 100000 #define maxsize 200 int map[maxsize][maxsize]; int dist[maxsize], prve[maxsize]; int n; void dijkstra(int n, int v, int *dist, int *prve, int map[maxsize][maxsize]) { bool s[maxsize]; for(int i=1; i<=n; i++) { dist[i]= map[v][i]; s[i] = false; if(dist[i]==maxint) prve[i] = 0; else prve[i] = v; } s[v]=1; dist[v] = 0; for(int i=2; i<=n; i++) { int temp = maxint; int u = v; for(int j=1; j<=n; j++) if(!s[j]&&dist[j]<temp) { temp = dist[j]; u = j; } s[u] = true; for(int j=1; j<=n; j++) if(!s[j]&&dist[j]>dist[u]+map[j][u]) { dist[j] = dist[u]+map[j][u]; prve[j] = u; } } } //查找路径 int search(int v, int u, int *prve) { int q[maxsize]; int tot =1; q[tot] = u; int temp = prve[u]; while(temp!=v) { q[tot]=temp; tot++; temp = prve[temp]; } q[tot] = v; for(int i=tot; i>=1; i--) { if(i!=1) cout<<q[i]<<"->"; else cout<<q[i]<<endl; } } int main() { //freopen("input.txt","r",stdin); int n,line; while(cin>>n>>line) { if(!n&&!line)break; int v, u, w; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) map[i][j] = maxint; while(line--) { cin>>v>>u>>w; map[v][u] = w; map[u][v] = w; } for(int i=1; i<=n; i++) dist[i] = maxint; dijkstra(n, 1, dist, prve, map); cout<<dist <<endl; //cout << "源点到最后一个顶点的路径为: "; //search(1, n, prve); } //system("pause"); return 0; }
相关文章推荐
- hdoj2544 最短路
- hdoj 2544 最短路【dijkstra or spfa】
- HDOJ 2544 最短路(最短路径 dijkstra算法,SPFA邻接表实现,floyd算法)
- HDOJ 2544 最短路 (最短路 Dijkstra && SPFA && Floyd)
- HDOJ 2544 最短路 (简单的最短路之spfa)
- hdoj 2544 最短路
- HDOJ 2544 最短路
- HDOJ_1874畅通工程续 && hdoj_2544最短路
- hdoj2544最短路(dijkstra)
- HDOJ--2544--最短路
- hdoj-2544 最短路【最短路径--dijkstra&&spfa&&floyd】
- HDOJ2544(简单最短路)
- hdoj 2544 最短路
- hdoj 2544 最短路 【dijkstra + floyd + spfa邻接表实现】
- hdoj 2544 最短路
- HDOJ-2544最短路
- HDOJ_1874畅通工程续 && hdoj_2544最短路
- HDOJ题目2544最短路(最短路径,floyd,模板)
- 最短路(Floyd)(HDOJ 2544)
- Hdoj 2544 最短路 典型dij模板