zoukankan      html  css  js  c++  java
  • hdu1599(无向图的最小环模板)

    题意:杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....VK,V1,那么必须满足K>2,就是说至除了出发点以外至少要经过2个其他不同的景区,而且不能重复经过同一个景区。现在8600需要你帮他找一条这样的路线,并且花费越少越好。

    Input
    第一行是2个整数N和M(N <= 100, M <= 1000),代表景区的个数和道路的条数。
    接下来的M行里,每行包括3个整数a,b,c.代表a和b之间有一条通路,并且需要花费c元(c <= 100)。
    Output
    对于每个测试实例,如果能找到这样一条路线的话,输出花费的最小值。如果找不到的话,输出"It's impossible.".
    #include<stdio.h>
    #include<string.h>
    #define N 101
    #define INF 0x7ffffff
    int mpt[N][N];
    int dist[N][N];
    int m,n,minc;
    int min(int x,int y)
    {
        if(x<y) return x;
        return y;
    }
    void floyd()
    {
        minc=INF;
        for(int k=1; k<=n; k++) //前K-1个点的情况递推前K个点的情况
        {
            for(int i=1; i<=k; i++)
                for(int j=i+1; j<=k; j++) //两个点必然是不同的
                    minc=min(minc,dist[i][j]+mpt[i][k]+mpt[k][j]);//K为环的最大点、无向图三点成环(从k点出发,回到k点)
            for(int i=1; i<=n; i++) //floyd算法求任意两点的最短路、包含前K-1个点
                for(int j=1; j<=n; j++)
                    if(dist[i][j]>dist[i][k]+dist[k][j])
                        dist[i][j]=dist[i][k]+dist[k][j];
        }
    }
    void init() //初始化必须全部都为无穷大、因为自身不能成环
    {
        for(int i=0; i<N; i++)
            for(int j=0; j<N; j++)
            {
                mpt[i][j]=INF;
                dist[i][j]=INF;
            }
    }
    int main()
    {
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            init();
            int s,e,v;
            for(int i=1; i<=m; i++)
            {
                scanf("%d%d%d",&s,&e,&v);
                if(v<mpt[s][e])
                {
                    mpt[s][e]=v;
                    mpt[e][s]=v;
                    dist[s][e]=v;
                    dist[e][s]=v;
                }
            }
            floyd();
            if(minc<INF)
                printf("%d
    ",minc);
            else
                printf("It's impossible.
    ");
        }
        return 0;
    }
    
     
  • 相关阅读:
    OSCP Learning Notes Buffer Overflows(3)
    OSCP Learning Notes Buffer Overflows(5)
    OSCP Learning Notes Exploit(3)
    OSCP Learning Notes Exploit(4)
    OSCP Learning Notes Exploit(1)
    OSCP Learning Notes Netcat
    OSCP Learning Notes Buffer Overflows(4)
    OSCP Learning Notes Buffer Overflows(1)
    OSCP Learning Notes Exploit(2)
    C++格式化输出 Learner
  • 原文地址:https://www.cnblogs.com/ziyi--caolu/p/3448467.html
Copyright © 2011-2022 走看看