tips:
1.用了Dijsktra算法,邻接表存图,单源最短路,无负权图
2.对n个顶点进行处理分成两个集合,松弛n次(也是循环次数)
3.学习优化后的Dijsktra...ヾ(◍°∇°◍)ノ゙
#include#include using namespace std;int n,m;const int M=110;const int inf=0x3f3f3f3f;struct node{ int v; int w; node(int _v,int _w) : v(_v),w(_w){}};vector G[M];int d[M];bool vis[M];void Dikstra(){ for(int i=1;i<=n;i++){ d[i]=inf; } fill(vis,vis+M,0); d[1]=0; for(int i=0;i d[u]+w) d[v]=d[u]+w; } }}int main(){ while(scanf("%d%d",&n,&m)!=EOF){ if(n==0 && m==0) break; int x,y,z; for(int i=0;i