首页 > 代码库 > spfa heatwv tyvjp1031
spfa heatwv tyvjp1031
spfa 裸题;
1 //spfa 链表 ; 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cstring> 5 #include<iostream> 6 #include<algorithm> 7 #include<queue> 8 #include<cmath> 9 using namespace std;10 const int N=2500+5,M=6200+5;11 queue<int>Q;12 struct edge13 {14 int e,v;15 edge *next;16 edge(){} //声明成员函数 17 edge(int e1,int v1,edge *next1)//成员函数 18 {e=e1;v=v1;next=next1;} 19 } *a[N];20 void addedge (int x,int y ,int z)21 {22 a[x]=new edge(y,z,a[x]);23 }24 25 bool used[N];26 int dis[N]; 27 void SPFA(int s)28 {29 memset(dis,0x7f,sizeof(dis));30 memset(used,0,sizeof(used));31 32 used[s]=1;Q.push(s);dis[s]=0;33 while(!Q.empty())34 {35 s=Q.front();Q.pop();used[s]=0;36 for(edge *p=a[s];p;p=p->next)37 {38 if(dis[s]+p->v<dis[p->e])39 {40 dis[p->e]=dis[s]+p->v;41 if(!used[p->e])42 {43 Q.push(p->e);44 used[p->e]=1;45 }46 }47 }48 }49 }50 51 int main()52 {53 int n,m,Ts,Te,x,y,z;54 scanf("%d%d%d%d",&n,&m,&Ts,&Te);55 for(int i=0;i<m;i++)56 {57 scanf("%d%d%d",&x,&y,&z);58 addedge(x,y,z); 59 addedge(y,x,z); 60 } 61 SPFA(Ts);62 printf("%d\n",dis[Te]);63 return 0;64 }
spfa heatwv tyvjp1031
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。