#include <bits/stdc++.h>
#define ll long long
#define N 200001
#define INF 0x3f3f3f3f
using namespace std;
ll tot1,tot2,n,m,ans,sum,head1[N],vis[N],t[N];
ll dfn[N],sta[N],low[N],ind,att,head2[N],top,k,num,cnt,fa[N];
ll val[N],al[N],c[N],f[N],dis[N];
ll xx[N],yy[N],zz[N];
struct node{
ll u,v,ino,w;
}e1[N],e2[N];
void add(ll x,ll y,ll z)
{
tot1++;
e1[tot1].u=head1[x];
e1[tot1].v=y;
head1[x]=tot1;
e1[tot1].w=z;
}
void spfa(ll x)
{
queue<ll>q;
while(!q.empty())
q.pop();
for(ll i=1;i<=n;i++)
{
vis[i]=0;
dis[i]=INF;
}
dis[x]=0;
vis[x]=1;
q.push(x);
while(!q.empty())
{
ll u=q.front();
q.pop();
vis[u]=0;
for(ll i=head1[u];i;i=e1[i].u)
{
ll v=e1[i].v;
if(dis[v]>dis[u]+e1[i].w)
{
dis[v]=dis[u]+e1[i].w;
if(!vis[v])
{
q.push(v);
vis[v]=1;
}
}
}
}
}
int main()
{
ll ju;
ll ans1=0,ans2=0;
cin>>n>>m>>ju;
for(ll i=1;i<=m;i++)
{
cin>>xx[i]>>yy[i]>>zz[i];
}
for(ll i=1;i<=m;i++)
add(xx[i],yy[i],zz[i]);
spfa(ju);
for(ll i=1;i<=n;i++)
ans1=max(ans1,dis[i]);
memset(e1,0,sizeof(e1));
memset(head1,0,sizeof(head1));
tot1=0;
for(ll i=1;i<=m;i++)
{
add(yy[i],xx[i],zz[i]);
}
spfa(ju);
cout<<max(ans1,ans2);
return 0;
}
、、连样例都过不了,怎么改