NYOJ 115城市平乱(Dijkstra最短路径)
2013-08-02 14:59
197 查看
#include<iostream> #include<queue> #include<cstdio> #include<cstring> #define INF 1<<30 #define Min(x,y) x>y?y:x using namespace std; int dist[1003],vis[1003]; int map[1003][1003],city[105]; int N,M,P,Q; int Dijkstra() { int i,j,mark,mindis,min_d; memset(vis,0,sizeof(vis)); for(i=1; i<=M; i++)dist[i] = INF;//初始化 dist[Q] = 0; //以目的地作为起点 for(i=1; i<=M; i++){ mark = -1; mindis = INF; for(j=1; j<=M; j++) if( !vis[j] && dist[j] < mindis){ mindis = dist[j]; mark = j; } vis[mark] = 1; for(j=1; j<=M; j++)if( !vis[j] && map[mark][j]) dist[j] = Min(dist[j],dist[mark] + map[mark][j]); } min_d = dist[city[1]]; for(i=1; i<=N; i++) if(dist[city[i]] < min_d)min_d = dist[city[i]]; return min_d; } int main() { //freopen("in.txt","r",stdin); int T,i,vi,vj,w; cin>>T; while(T--) { cin>>N>>M>>P>>Q; memset(map,0,sizeof(map)); for(i=1; i<=N; i++)cin>>city[i]; for(i=1; i<=P; i++){ cin>>vi>>vj>>w; if(map[vi][vj]) map[vi][vj] = map[vi][vj]<w?map[vi][vj]:w; else map[vi][vj] = map[vj][vi] = w; } cout<<Dijkstra()<<endl; } return 0; }
View Code
相关文章推荐
- nyoj--115 城市平乱(最短路径)
- NYOJ115城市平乱_单源点最短路径(spfa)
- NYOJ 题目115 城市平乱 (最短路径-迪杰斯特拉算法)
- 城市平乱(nyoj 115)单源最短路径
- NYOJ 题目115城市平乱(最短路径)
- nyist oj 115 城市平乱 (最短路径)
- nyoj 115 城市平乱 dijkstra最短路
- nyoj 115 城市平乱 dijkstra最短路
- NYOj115-城市平乱-Dijkstra-
- nyoj 115 城市平乱(dijkstra 终点当起点)
- HDUOJ1874 畅通工程续 和 NYOJ 115 城市平乱【Dijkstra 算法】
- nyoj 115 城市平乱(dijkstra)
- nyoj 115------城市平乱( dijkstra // bellman )
- NYOJ 115 城市平乱(Dijkstra入门)
- NYOJ 115 城市平乱(图论Dijkstra)
- NYOJ 115城市平乱 【dijkstra】
- NYOJ 115 城市平乱(最短路--dijkstra)
- NYOJ - 115 - 城市平乱 ( 最短路 Dijkstra )
- NYOJ 115 城市平乱【Dijkstra】
- nyoj115 城市平乱(最短路 dijkstra)