亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

poj3522Slim Span(最小生成樹性質)

2019-11-14 12:49:42
字體:
來源:轉載
供稿:網友

題目鏈接

Slim Span
Time Limit: 5000MS Memory Limit: 65536K
Total Submissions: 7870 Accepted: 4191

Description

Given an undirected weighted graph G, you should find one of spanning trees specified as follows.

The graph G is an ordered pair (VE), where V is a set of vertices {v1v2, …, vn} and E is a set of undirected edges {e1e2, …, em}. Each edge e ∈ E has its weight w(e).

A spanning tree T is a tree (a connected subgraph without cycles) which connects all the n vertices with n ? 1 edges. The slimness of a spanning tree T is defined as the difference between the largest weight and the smallest weight among the n ? 1 edges of T.

Figure 5: A graph G and the weights of the edges

For example, a graph G in Figure 5(a) has four vertices {v1v2v3v4} and five undirected edges {e1e2e3e4e5}. The weights of the edges are w(e1) = 3, w(e2) = 5, w(e3) = 6, w(e4) = 6, w(e5) = 7 as shown in Figure 5(b).

Figure 6: Examples of the spanning trees of G

There are several spanning trees for G. Four of them are depicted in Figure 6(a)~(d). The spanning tree Ta in Figure 6(a) has three edges whose weights are 3, 6 and 7. The largest weight is 7 and the smallest weight is 3 so that the slimness of the tree Ta is 4. The slimnesses of spanning trees TbTc and Td shown in Figure 6(b), (c) and (d) are 3, 2 and 1, respectively. You can easily see the slimness of any other spanning tree is greater than or equal to 1, thus the spanning tree Td in Figure 6(d) is one of the slimmest spanning trees whose slimness is 1.

Your job is to write a PRogram that computes the smallest slimness.

Input

The input consists of multiple datasets, followed by a line containing two zeros separated by a space. Each dataset has the following format.

nm 
a1b1w1
 ? 
ambmwm

Every input item in a dataset is a non-negative integer. Items in a line are separated by a space. n is the number of the vertices and m the number of the edges. You can assume 2 ≤ n ≤ 100 and 0 ≤ m≤ n(n ? 1)/2. ak and bk (k = 1, …, m) are positive integers less than or equal to n, which represent the two vertices vak and vbk connected by the kth edge ekwk is a positive integer less than or equal to 10000, which indicates the weight of ek. You can assume that the graph G = (VE) is simple, that is, there are no self-loops (that connect the same vertex) nor parallel edges (that are two or more edges whose both ends are the same two vertices).

Output

For each dataset, if the graph has spanning trees, the smallest slimness among them should be printed. Otherwise, ?1 should be printed. An output should not contain extra characters.

Sample Input

4 51 2 31 3 51 4 62 4 63 4 74 61 2 101 3 1001 4 902 3 202 4 803 4 402 11 2 13 03 11 2 13 31 2 22 3 51 3 65 101 2 1101 3 1201 4 1301 5 1202 3 1102 4 1202 5 1303 4 1203 5 1104 5 1205 101 2 93841 3 8871 4 27781 5 69162 3 77942 4 83362 5 53873 4 4933 5 66504 5 14225 81 2 12 3 1003 4 1004 5 1001 5 502 5 503 5 504 1 1500 0

Sample Output

1200-1-110168650

Source

Japan 2007

題意:

給出一個圖,若圖連通,則求最大邊與最小邊差值最小的生成樹,輸出最小差值。否則輸出-1.

題解:

 最小生成樹有一個很重要的性質:在構造生成樹時有可能選擇不同的邊,但最小生成樹的權是唯一的!所以在用kruskal算法時第一次加入的必然是最小生成樹的最小邊權值,最小邊確定后,最小生成樹的最大邊的權值是所以生成樹中最小的,于是只要枚舉最小邊,然后求最小生成樹,就可以得到最大邊,只要每次更新最優解就行了。

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<queue>#include<stack>using namespace std;#define rep(i,a,n) for (int i=a;i<n;i++)#define per(i,a,n) for (int i=n-1;i>=a;i--)#define pb push_back#define fi first#define se secondtypedef vector<int> VI;typedef long long ll;typedef pair<int,int> PII;const int inf=0x3fffffff;const ll mod=1000000007;const int maxn=100+10;int pa[maxn];struct edge{    int u,v,w;    bool Operator <(const edge&b)const{        return w<b.w;    }}e[maxn*maxn];int find(int x){    return pa[x]==x? x:pa[x]=find(pa[x]);}int main(){    int n,m;    while(~scanf("%d%d",&n,&m))    {        if(n==0&&m==0) break;        int ans=inf;        for(int i=0;i<m;i++)        {            int u,v,w;            scanf("%d%d%d",&u,&v,&w);            e[i].u=u,e[i].v=v,e[i].w=w;        }        sort(e,e+m);        rep(i,0,m)        {            rep(k,1,n+1) pa[k]=k;            int mi=e[i].w;            pa[e[i].v]=e[i].u;            int cnt=1;            rep(j,i+1,m)            {                int fu=find(e[j].u),fv=find(e[j].v);                if(fu==fv)                    continue;                pa[fu]=fv;                cnt++;                if(cnt==n-1)                {                    ans=min(ans,e[j].w-mi);                    break;                }            }            if(i==0&&cnt<n-1)            {                ans=-1;                break;            }            if(cnt<n-1) break;        }        if(!m) ans=-1;        if(m==1)        {            if(n==2) ans=0;            else ans=-1;        }        cout << ans << endl;    }    return 0;}


上一篇:數據庫 Access002

下一篇:list容器

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久97| 国产精品无码专区在线观看| 一本色道久久88亚洲综合88| 欧美性在线视频| 欧美视频一区二区三区…| 2020国产精品视频| 欧美成人剧情片在线观看| 亚洲国产欧美自拍| 日本高清+成人网在线观看| 91久久精品美女高潮| 国产精品成人v| xxxxx成人.com| 久久精品亚洲国产| 日韩一区二区三区在线播放| 久久久中文字幕| 日韩免费av片在线观看| 欧美精品激情blacked18| 亚洲国产精品福利| 欧美福利小视频| 国产伊人精品在线| 亚洲国产欧美精品| 久久香蕉国产线看观看网| 亚洲国产精品一区二区三区| 亚洲国产精彩中文乱码av| 久久久久久久91| 久久久国产精品免费| 在线激情影院一区| 国产精品手机播放| 日韩av在线播放资源| 欧美激情久久久久久| 亚洲欧美中文日韩v在线观看| 欧美在线一级va免费观看| 久久韩国免费视频| 色综合久久天天综线观看| 久久免费国产精品1| 亚洲国产精品中文| 欧美激情网站在线观看| 伊人久久五月天| 日本成人激情视频| 高清一区二区三区四区五区| 国产亚洲精品一区二555| 日韩中文娱乐网| 少妇高潮久久77777| 久久精品中文字幕电影| 国产精品扒开腿做爽爽爽男男| 国自产精品手机在线观看视频| 亚洲欧美日韩精品久久奇米色影视| 在线观看欧美成人| 在线精品国产欧美| 国产精品国产福利国产秒拍| 国产欧美中文字幕| 成人在线小视频| 午夜精品蜜臀一区二区三区免费| 国产精品极品在线| 成人午夜激情网| 国产精品99久久久久久久久久久久| 亚洲精品电影网在线观看| 91免费高清视频| 69久久夜色精品国产69乱青草| 日韩欧美亚洲国产一区| 亚洲一区二区国产| 精品国内产的精品视频在线观看| 欧美另类极品videosbestfree| 国产亚洲激情视频在线| 精品日本美女福利在线观看| 久久精品美女视频网站| 视频在线一区二区| 亚洲视频第一页| 日韩一二三在线视频播| 福利视频一区二区| 国产精品成人免费电影| 色综合久综合久久综合久鬼88| 国产亚洲日本欧美韩国| 欧美猛交免费看| 超碰97人人做人人爱少妇| 91大神在线播放精品| 精品亚洲国产视频| 久久久久久久久久久久av| 色妞一区二区三区| 91嫩草在线视频| 亚洲成avwww人| 亚洲最大成人在线| 国产美女久久久| 亚洲成av人片在线观看香蕉| 欧美日韩另类在线| 亚洲国内高清视频| 国产欧美最新羞羞视频在线观看| 国产精品一区专区欧美日韩| 中文字幕综合一区| 色综合伊人色综合网站| 国产精品久久久999| 久久久国产在线视频| 国产精品丝袜视频| 亚洲一区二区久久久久久| 亚洲男人天堂视频| 91精品久久久久久| 色综合久久久久久中文网| 亚洲人高潮女人毛茸茸| 亚洲福利影片在线| 亚洲综合在线中文字幕| 国产精品亚洲网站| 中文字幕在线看视频国产欧美在线看完整| 日本精品免费一区二区三区| 91免费高清视频| 亚洲精品一二区| 久久影院资源站| 日韩毛片在线看| 91九色国产在线| 国产精品亚洲一区二区三区| 欧美夜福利tv在线| 国产精品综合久久久| 隔壁老王国产在线精品| 欧美成人午夜激情视频| 国产精品成人久久久久| 亚洲jizzjizz日本少妇| 国产精品第3页| 国产+成+人+亚洲欧洲| 神马久久久久久| 精品一区二区三区三区| 日韩精品在线观看视频| 国内精品一区二区三区四区| 欧美激情免费观看| 成人精品久久av网站| 操日韩av在线电影| 欧美乱妇高清无乱码| 亚洲加勒比久久88色综合| 亚洲女人天堂成人av在线| 亚洲人成欧美中文字幕| 国产精品三级美女白浆呻吟| 精品中文字幕久久久久久| 日本亚洲欧美三级| 国产一区二区香蕉| 成人美女免费网站视频| 日韩欧美国产黄色| 久久久成人的性感天堂| 国产精品一区二区三区免费视频| 国产精品久久久久久久久久新婚| 国产视频久久久久久久| 国产日韩欧美自拍| www.日韩系列| 深夜精品寂寞黄网站在线观看| 日韩成人高清在线| 欧洲精品久久久| 亚洲精品美女网站| 中文字幕综合一区| 国产精品视频26uuu| 亚洲电影免费观看高清完整版在线| 国产欧美一区二区三区在线看| 亚洲精品动漫久久久久| 日韩大片在线观看视频| 91av视频导航| 日韩一区二区三区在线播放| 国产精品成人观看视频国产奇米| 亚洲国产精品成人va在线观看| 91成人国产在线观看| 国产精品88a∨| 欧美—级a级欧美特级ar全黄| 亚洲欧美中文日韩在线v日本| 国产一区在线播放| 黄色精品一区二区| 亚洲人成网站免费播放| 久久久久久久av| 91精品视频大全| 国语自产偷拍精品视频偷|