[C++] 純文本查看 復制代碼
#include<iostream>
#include<cfloat>
#include<iomanip>
using namespace std;
struct edge{int a,b; double cost;};
edge e[25010];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n,m,a,b;
long double v;
cin>>n>>m>>v>>a>>b;
a--; b--;
for(int i=0;i<m;i++)
{
int a,b;
double c;
cin>>a>>b>>c;
a--; b--;
e={a,b,c};
}
long double dis[2010];
for(int i=0;i<n;i++)
dis=DBL_MAX;
dis[a]=v;
for(int i=0;i<n;i++)
{
bool update=false;
for(int i=0;i<m;i++)
if(dis[e.a]!=DBL_MAX && dis[e.a]*e.cost < dis[e.b])
{
dis[e.b] = dis[e.a]*e.cost;
update=true;
}
if(!update) break;
if(i==n-1) dis=0;
}
cout<<fixed<<setprecision(0)<<dis<<endl;
}