洛谷P1339 [USACO09OCT]热浪Heat Wave

时间:2022-05-10 16:28:51

思路:裸SPFA过一遍(建议使用邻接链表存储),无向图,无向图,无向图,重要的事情要说三遍!!!蜜汁RE是什么鬼????第九个点数组开到20K,第十个点数组开到30K才AC。或许我代码写的有bug?(逃

CODE:

 #include<iostream>
#include<queue>
using namespace std;
queue<int>q;
struct Edge{
int pre,to,w;
}edge[];
int head[];
bool if_q[];
int dis[];
int T, C, Ts, Te,Rs, Re,Ci;
int num_edge;
inline void add_edge(int from,int to,int w)
{
edge[++num_edge].pre=head[from];
edge[num_edge].to=to;
edge[num_edge].w=w;
head[from]=num_edge;
}
inline void spfa(int u)
{
q.push(u);
if_q[u]=true;
while(!q.empty())
{
u=q.front();
for(int i=head[u]; i!=; i=edge[i].pre)
{
int v=edge[i].to;
if(dis[u]+edge[i].w<dis[v])
{
dis[v]=dis[u]+edge[i].w;
if_q[v]=true;
q.push(v);
}
}
if_q[u]=false;
q.pop();
}
}
int main()
{
for(int i=;i<;i++)
dis[i]=0x7fffffff;
cin>>T>>C>>Ts>>Te;
for(int i=;i<C;i++)
{
cin>>Rs>>Re>>Ci;
add_edge(Rs,Re,Ci);
add_edge(Re,Rs,Ci);
}
dis[Ts]=;
spfa(Ts);
cout<<dis[Te];
return ;
}

注:就是模板题,STL大法好,哈哈哈。