这道题还是上模板啦~~SPFA大法好(本人还是懒得打邻接表)
一道橙题:
上代码:
#include<bits/stdc++.h> using namespace std; int n,a[2510][2510],m,fr,to; void add(int x,int y,int z){a[x][y]=z;} int dis[2510]; bool vis[2510]; queue<int> q; void SPFA(int from){ vis[from]=1; q.push(from);dis[from]=0; while(!q.empty()){ int p=q.front();vis[p]=0; q.pop(); for(int i=1;i<=n;i++){ if(a[p][i]!=0&&dis[i]>dis[p]+a[p][i]){ dis[i]=dis[p]+a[p][i]; if(vis[i]==0){ vis[i]=1; q.push(i); } } } } } int main(){ scanf("%d%d%d%d",&n,&m,&fr,&to); for(int i=1;i<=m;i++){ int x,y,z; scanf("%d%d%d",&x,&y,&z); add(x,y,z); add(y,x,z); } memset(dis,127,sizeof(dis)); SPFA(fr); printf("%d ",dis[to]); }