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;    }

原创粉丝点击