/*
Ural 1450
题意: 求S点到t的最大距离
*/
#include<stdio.h>
#include<string.h>
#define maxn 510
#define inf 0x3fffffff
long long map[maxn][maxn];
long long dp[maxn];
bool vis[maxn];
long long max(long long x,long long y)
{
if(x>y) return x;
return y;
}
int n;
long long dfs(int x)
{
if(vis[x]) return dp[x];
for(int i=1;i<=n;i++)
{
if(map[i][x])
{
dp[x]=max(dp[x],dfs(i) + map[i][x]);
//dfs(i);dp[i]
}
}
vis[x]=1;
if(dp[x]<0)
dp[x]=-inf;
return dp[x];
}
int main()
{
int m,i,j,x,y,s,t;
long long w;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
map[i][j]=0;
while(m--)
{
scanf("%d%d%lld",&x,&y,&w);
if(map[x][y]<w)
map[x][y]=w;
}
for(i=0;i<=n;i++)
{
dp[i]=-1;
vis[i]=0;
}
scanf("%d%d",&s,&t);
dp[s]=0;
vis[s]=1;
dfs(t);
if(dp[t]<0)
printf("No solution\n");
else
printf("%lld\n",dp[t]);
}
return 0;
}
ural 1450
最新推荐文章于 2019-07-11 16:56:56 发布