#include#include#include

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統 2002 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條評論
主站蜘蛛池模板: 五月婷六月丁香狠狠躁狠狠爱 | 精品久久网 | 亚洲欧美另类日韩 | av免费在线免费观看 | 亚洲在成人网在线看 | 日韩av电影在线免费观看 | 精品中文在线 | 久久综合狠狠综合狠狠 | 国产精品一二区 | 色综合久久中文色婷婷 | 神马久久蜜桃 | 午夜男人女人爽爽爽视频 | 免费观看黄的小视频 | 成人欧美一区二区三区视频xxx | 成人国产永久福利看片 | 国内自拍第五一页 | 欧美第5页| 91久久久久久久一区二区 | 亚洲国产二区 | 精品一区二区三区不卡 | 特级毛片免费观看视频 | 中文字幕免费在线观看 | 韩国精品一区二区 | 另类综合网 | 国产成人精品一区在线播放 | 日韩欧美一区二区三区四区 | 91国色| 欧美国产日韩一区二区三区 | 91精品国产91久久久久久吃药 | 国产精品久久久久免费 | 小明永久2015www永久免费观看 | 国产亚洲精品久久久久婷婷图片 | 久久最新精品 | 青青草视频破解版 | 国产日本在线播放 | 杏美月av | 国产自产拍精品视频免费看 | 亚洲精选一区 | 国产一区二区丁香婷婷 | 国产图片区| 性爱视频在线免费 |