POJ1797---Heavy Transportation(最短路变形)

题目来源:https://vjudge.net/problem/POJ-1797
【题意】
从点1到点n,很多条路径,每条路径都有一个最小的权值,求这些最小的权值里的最大值。
【思路】
这道题和我做的的上一题差不多一样的做法(自行点击)。均是维护d数组就可以了,只不过稍微有些变化而已,做这种题的关键是理解。
【代码】

#include
#include
#include
#include
#define INF 0x3f3f3f3f
using namespace std;
int w[1010][1010];
int d[1010];
bool vis[1010];
int n,m;
void djs()
{
    for(int i=1; i<=n; i++)
    {
        d[i]=w[1][i];
        vis[i]=0;
    }
    for(int i=1; i<=n; i++)
    {
        int m=-1;
        int x=-1;
        for(int j=1; j<=n; j++)
            if(!vis[j]&&d[j]>m)
                m=d[x=j];
        if(x!=-1)
        {
            vis[x]=1;
            for(int j=1; j<=n; j++)
                if(!vis[j]&&d[j]//维护d数组
        }
    }
}
int main()
{
    int T,t=1;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&m);
        for(int i=1; i<=n; i++)
            for(int j=1; j<=n; j++)
                w[i][j]=i==j?0:-1;
        for(int i=1; i<=m; i++)
        {
            int x,y,z;
            scanf("%d%d%d",&x,&y,&z);
            if(w[x][y]printf("Scenario #%d:\n%d\n\n",t++,d[n]);
    }
}

你可能感兴趣的:(ACM竞赛,【图论】--最短路,ACM的进程)