#include#include#include

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

poj 1679 The Unique MST 【次小生成樹】【模板

系統 2238 0

題目: poj 1679 The Unique MST


題意:給你一顆樹,讓你求最小生成樹和次小生成樹值是否相等。


分析:這個題目關鍵在于求解次小生成樹。

方法是,依次枚舉不在最小生成樹上的邊,然后加入到最小生成樹上,然后把原樹上加入了之后形成環的最長的邊刪去,知道一個最小的。就是次小生成樹。

這些須要的都能夠在求解最小生成樹的時候處理出來。


AC代碼:

      #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#define Del(a,b) memset(a,b,sizeof(a))
using namespace std;
const int inf = 0x3f3f3f3f;
const int N = 550;
int mp[N][N];
bool vis[N],used[N][N];
int pre[N],ma[N][N],cost[N];
int n,m;
int Prim(int x)
{
    int ans = 0;
    Del(ma,0);
    Del(used,false);
    for(int i=1;i<=n;i++)
    {
        cost[i] = mp[x][i];
        pre[i] = 1;
        vis[i] = false;
    }
    vis[x] = true;
    pre[x] = -1;
    for(int i=1;i<n;i++)
    {
        int minc = inf;
        int  p = -1;
        for(int j=1;j<=n;j++)
        {
            if(vis[j]==false && minc>cost[j])
            {
                minc = cost[j];
                p = j;
            }
        }
        if(p==-1)
            return -1;
        ans+=minc;
        vis[p] = true;
        int tmp = pre[p];
        used[p][tmp] = used[tmp][p] = true; //MST上的邊
        for(int j=1;j<=n;j++)
        {
            if(vis[j])
                ma[j][p] = ma[p][j] = max(ma[j][tmp],cost[p]);
            if(vis[j]==false && cost[j]>mp[p][j])
            {
                cost[j] = mp[p][j];
                pre[j] = p;
            }
        }
    }
    return ans;
}
int Next_Prim(int x)
{
    int ans = inf;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(mp[i][j]!=inf && !used[i][j]) //枚舉不在MST上的邊替換
                ans = min(ans,x+mp[i][j]-ma[i][j]);
        }
    }
    return ans;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        memset(mp,inf,sizeof(mp));
        scanf("%d%d",&n,&m);
        for(int i=0;i<m;i++)
        {
            int x,y,z;
            scanf("%d%d%d",&x,&y,&z);
            mp[x][y] = mp[y][x] = z;
        }
        int ans = Prim(1);
        int next = Next_Prim(ans);
        //printf("%d %d\n",ans,next);
        if(ans!=next)
            puts("No");
        else
            puts("Yes");
    }
    return 0;
}

    


poj 1679 The Unique MST 【次小生成樹】【模板】


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 深夜免费| 免费观看成人羞羞视频网站观看 | 手机在线观看亚洲国产精品 | 在线观看日本免费不卡 | 国产成人精品男人的天堂网站 | 国产婷婷综合在线视频中 | 综合另类小说色区色噜噜 | 精品久久久久久午夜 | 午夜性a一级毛片 | 亚洲欧美综合一区二区三区四区 | 四虎在线影院 | 五月国产综合视频在线观看 | 精品国产一区二区三区香蕉沈先生 | 免费看黄色片视频 | 男女69式互添在线观看 | 一级免费视频 | 亚洲精品一 | 国内精品自在自线香蕉 | 欧美人成人亚洲专区中文字幕 | 两性色午夜视频免费老司机 | 女性牲交一级毛片 | 国产欧美日韩高清专区手机版 | 国产精品视频第一区二区 | 亚洲视频污 | 成人a网| 欧美金妇欧美乱妇xxxx | 久热99这里只有精品视频6 | 国产一级毛片视频在线! | 免费一级毛片不卡在线播放 | 欧美一级高清毛片aaa | 亚洲精品色综合色在线观看 | 深夜在线看 | 久久波多野结衣 | 在线欧美激情 | 国产一区二区三区久久精品 | 免费看爱爱视频 | 五月天婷婷视频 | 久久综合色播 | 一区二区三区欧美日韩国产 | 狠狠色伊人亚洲综合第8页 狠狠色综合久久丁香婷婷 狠狠色综合久久婷婷 | 中文字幕观看 |