ural 1450
来源:互联网 发布:sql语言编程器 编辑:程序博客网 时间:2024/05/22 01:31
/* 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; }