holiday/8.15/F - Candies.cpp

71 lines
1.2 KiB
C++
Raw Normal View History

2022-08-15 16:53:11 +08:00
//youwu
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<stack>
using namespace std;
const int N=3e4+5,N3=15e4+5,inf=0x3f3f3f3f;
int to[N3],ne[N3],w[N3],h[N],cnt=0,s=N-4,e,dist[N];
bool in[N],wa=0,u,v,w1;
int n,m,maxn=0;
void add(int u,int v,int w1)
{
to[++cnt]=v;
ne[cnt]=h[u];
w[cnt]=w1;
h[u]=cnt;
}
void spfa()
{
stack<int>q;//queueû<65><C3BB><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
q.push(s);
while(!q.empty())
{
int u=q.top();
q.pop();
in[u]=0;//spfa<66>ľ<EFBFBD><C4BE><EFBFBD><E8A3A1>
for(int i=h[u];i;i=ne[i])
{
int v=to[i],w1=w[i];
// printf("%d %d %d\n",u,v,w1);
if(dist[u]+w1<dist[v])
{
dist[v]=dist[u]+w1;
// printf("%d(%d) %d(%d) %d\n",u,dist[u],v,dist[v],w1);
if(!in[v])
{
q.push(v);
in[v]=1;
}
}
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<=n;i++)
{
dist[i]=inf;
}
for(int i=1;i<=m;i++)//n,m<><6D><EFBFBD><EFBFBD>
{
scanf("%d%d%d",&u,&v,&w1);
add(u,v,w1);
}
s=1;
dist[s]=0;
spfa();
maxn=0;
// for(int i=2;i<=n;i++)
// {
// if(dist[i]>maxn)
// {
// maxn=dist[i];
// }
// }
printf("%d",dist[n]);
return 0;
}