#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 | 国产精品亚洲视频 | 亚洲精品一区二区三区不 | 亚洲一区中文字幕在线观看 | 久久福利青草精品免费 | 国产中文字幕在线观看 | 亚洲精品久久久一区 | 午夜精品在线播放 | 亚洲高清视频一区 | 成人国产在线 | 欧美 日韩 综合 | 色婷婷综合久久久久中文一区二区 | 激情五月色综合国产精品 | 久久免费99精品久久久久久 | 欧美videosex性极品hd | 国产成人免费 | 欧美一区二区大片 | 日本人视频jizz页码69 | 亚洲综合色视频在线观看 | 精品三级在线 | 日本中文字幕在线播放 | 国产精品一区二区三区四区 | 亚洲男人的天堂网站 | 国产精品资源网站在线观看 | 国产精品永久免费视频观看 | 免费视频91 | 欧洲色吧 | 俄罗斯色妞18av| 国产成人精品福利网站在线观看 | 国产美女啪啪 | 青青草一区 | 91精品国产免费久久 | 日本在线视频一区二区 | 国产激情网站 | 成人做爽爽爽爽免费国产软件 | 特级全黄一级毛片免费 | 日本大人吃奶视频xxxx | 一区二区三区四区国产精品视频 | 国产精品1区2区3区 一级电影免费 | 超碰8 | 中文字幕一区二区三区四区不卡 |