#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條評論
主站蜘蛛池模板: 久久精品视 | 91热久久免费频精品黑人99 | 免费观看www | 国产精品视频一区二区三区 | 日韩欧美动作影片 | 狠狠做深爱婷婷久久一区 | 日本亚洲视频 | 免费看的黄色 | 中文字幕国产日韩 | 另类亚洲视频 | 欧美综合自拍亚洲综合图片区 | 国产精品成人免费一区久久羞羞 | 久久成人精品视频 | 午夜网| 国产一区二区三区视频 | 成人免费观看视频 | 亚洲精品中文字幕乱码一区二区 | 日韩视频在线观看 | 91五月天 | 欧美精品影视 | 青青草视频网 | 欧美成人手机在线 | 久久综合久久久久 | 人妻体内射精一区二区三四 | 北岛玲亚洲一区在线观看 | 日韩综合在线 | 91大神精品长腿在线观看网站 | 999热精品视频 | 国产精品揄拍一区二区久久 | 久久免费看少妇高潮A片JA | 久草看片 | 欧美精品亚洲一区二区在线播放 | 波多野结衣办公室在线 | 亚洲www在线| 日本高清视频免费在线观看 | 日产一卡二卡乱码免费 | 国产成人aaa在线视频免费观看 | 色在线视频 | 精品久久久久久久久久久久久久 | 免费看一级欧美毛片视频 | 国产成人自拍一区 |