Dijkstra最短路
#include#include #include #include #include #include #include using namespace std;int w[2501][2501],dis[2501];vector to[2501];bool vis[2501];int n,m,s,t;int main(){ scanf("%d%d%d%d",&n,&m,&s,&t); for(int i=1;i<=m;i++) { int re,rs,c; scanf("%d%d%d",&rs,&re,&c); w[re][rs]=c,w[rs][re]=c; to[re].push_back(rs); to[rs].push_back(re); } memset(dis,127,sizeof(dis)); dis[s]=0,vis[s]=true; for(int i=1;i<=n;i++) if(w[s][i]) dis[i]=w[s][i]; for(int i=1;i dis[u]+w[u][k]) { dis[k]=dis[u]+w[u][k]; } } } printf("%d",dis[t]); return 0;}