洛谷 P1339 [USACO09OCT]热浪Heat Wave(dijkstra)

时间:2021-05-22 16:29:08

题目链接

https://www.luogu.org/problemnew/show/P1339

最短路


解题思路

dijkstra直接过

注意:

  • 双向边
  • memset ma数组要在读入之前

AC代码

 #include<iostream>
#include<cstring>
using namespace std;
int n,m,ts,te;
int dist[];
bool ok[];
int ma[][];
int main(){
cin>>n>>m>>ts>>te;
memset(ma,0x3f,sizeof(ma));
for(int i=;i<=m;i++){
int a,b,c;
cin>>a>>b>>c;
ma[a][b]=c;
ma[b][a]=c;
}
memset(dist,0x3f,sizeof(dist));
dist[ts]=;
for(int i=;i<=n;i++){
int mmm,minn=0x3f3f3f;
for(int j=;j<=n;j++){
if(!ok[j]&&dist[j]<minn){
minn=dist[j];
mmm=j;
}
}
ok[mmm]=;
if(ok[te]==) break;
for(int k=;k<=n;k++){
dist[k]=min(dist[k],dist[mmm]+ma[mmm][k]);
}
}
cout<<dist[te];
return ;
}