首页 > 代码库 > spfa模板
spfa模板
1 #include <cstdio> 2 #include <cstring> 3 #include <vector> 4 #include <queue> 5 using namespace std; 6 vector<int> to[1001]; 7 queue<int> que; 8 int x,y,z,n,m,a,b,d[1001],w[1001][1001]; 9 bool vis[1001]; 10 int main() 11 { 12 scanf("%d%d",&n,&m); 13 for (int i=1;i<=m;i++) 14 { 15 scanf("%d%d%d",&x,&y,&z); 16 to[x].push_back(y);to[y].push_back(x); 17 w[y][x]=w[x][y]=z; 18 } 19 scanf("%d%d",&a,&b); 20 memset(d,0x7f,sizeof(d)); 21 que.push(a);d[a]=0; 22 while(!que.empty()) 23 { 24 int exp=que.front(),sz=to[exp].size();vis[exp]=0;que.pop(); 25 for (int i=0;i<sz;i++) 26 { 27 int end=to[exp][i]; 28 if(d[end]>w[exp][end]+d[exp]) 29 { 30 d[end]=w[exp][end]+d[exp]; 31 if (!vis[end]) {vis[end]=1;que.push(end);} 32 } 33 } 34 } 35 printf("%d",d[b]); 36 }
spfa模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。