记录编号 548423 评测结果 AAAAAAAAAA
题目名称 [USACO Oct09] 热浪 最终得分 100
用户昵称 GravatarCSU_Turkey 是否通过 通过
代码语言 C++ 运行时间 0.034 s
提交时间 2020-01-18 17:06:50 内存使用 13.87 MiB
显示代码纯文本
#include<bits/stdc++.h>
#define LL long long
#define dl double
using namespace std;
const int inf=6205;
int n,m,s,e;
int fi[inf],nxt[inf<<1],to[inf<<1],cst[inf<<1],tot;
void link(int x,int y,int c){nxt[++tot]=fi[x];fi[x]=tot;to[tot]=y;cst[tot]=c;}
struct Dijk{
 int dis,id;
 bool operator < (const Dijk &o)const{
  return dis > o.dis;
 }
};
priority_queue<Dijk>S;
int dis[inf],vis[inf];
int main(){
 freopen("heatwvx.in","r",stdin);
 freopen("heatwvx.out","w",stdout);
// freopen("in.txt","r",stdin);
 scanf("%d%d%d%d",&n,&m,&s,&e);
 for(int i=1;i<=m;i++){int x,y,c;scanf("%d%d%d",&x,&y,&c);link(x,y,c);link(y,x,c);}
 S.push((Dijk){0,s});memset(dis,0x7f,sizeof(dis));dis[s]=0;
 while(!S.empty()){
  Dijk u=S.top();S.pop();if(vis[u.id])continue;vis[u.id]=1;
  for(int i=fi[u.id];i;i=nxt[i])
   if(dis[to[i]] > dis[u.id]+cst[i]){
    dis[to[i]]=dis[u.id]+cst[i];
    S.push((Dijk){dis[to[i]],to[i]});
   }
 }
 printf("%d\n",dis[e]);
 return 0;
}
/*稠密图的话优化后还不如不优化的*/
/*mlogm*/