日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elegant Construction HDU-5813 构造

發(fā)布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elegant Construction HDU-5813 构造 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

- 題意

給出我們從1-n城市的點能直接(或間接)到達的城市的數(shù)量作為這個點的權(quán)值 讓我們判斷并構(gòu)造一個單向圖 使得這個圖完全契合給出的數(shù)據(jù) special judge 任意一組結(jié)果就可以題目中給出 圖中無環(huán)無回路

- 分析

剛看到根據(jù)聯(lián)通數(shù)目構(gòu)造圖 哇 這怎么做 好復(fù)雜啊!這該如何構(gòu)造?? 其實想一下就可以發(fā)現(xiàn) 題目中說是一個無環(huán)圖 也就是說

任何一個有向無環(huán)圖中必定至少存在一個入度為0的頂點,至少存在一個出度為0的頂點,否則圖中必存在環(huán)。有向無環(huán)圖對于構(gòu)造一個任務(wù)必須發(fā)生在另一個任務(wù)之前的這種依賴模型特別有效。有向無環(huán)圖的另一個應(yīng)用是規(guī)劃項目,例如建造房屋時,框架的設(shè)計必須在蓋屋頂之前。

否則 如果無環(huán)圖中的每一個點都有出度的話 這與無環(huán)的性質(zhì)矛盾 我們說 一個無環(huán)圖就是一個可以被拓補排序的圖 也就說 這個圖 一定可以被拓撲排序 所以我們發(fā)現(xiàn) 低權(quán)值的點 不會連向高權(quán)值的點 因為一個低權(quán)值的點 如果連向一個比自己權(quán)值高的點就會產(chǎn)生矛盾 所以當我們把低權(quán)值的點處理完后 把每一層低權(quán)值的點處理完后 相應(yīng)的高一層的點就相當于單個點 就像拓撲排序 因為高一層的點來自低一層的點 所以我們從低到高處理 每處理完一層點比其只高一層的點 就相當于單個點 就像是拓撲排序的步驟 每排好一個點 就把這個點的出度全部刪除 這里同理 每選完一個點 就把這個點 直接到達的點看成 無入度點 所以就可以一個個選了 生序排序 從低到高處理 相當于反向拓撲排序的步驟 如果這個處理的這個點 找不到足夠的點 可以連 就輸出NO 證明一個有向圖是有向無環(huán)圖方法: 拓撲排序方法

code

#include<bits/stdc++.h> using namespace std; vector<int>v[1010]; struct node{int o,val; }a[1010]; bool cmp(node aa,node bb){return aa.val<bb.val; } int main() {int p,t,n;scanf("%d",&t);for( p=1;p<=t;p++){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i].val);a[i].o = i;}printf("Case #%d: ",p);sort(a+1,a+1+n,cmp);if(a[1].val!=0){puts("No");continue;}int i,c=0,j;bool f=0;for(i=1;i<=n;i++){if(a[i].val==0)continue;for(j=1;j<i&&j<=a[i].val;j++){v[a[i].o].push_back(a[j].o);c++;}if(v[a[i].o].size()!=a[i].val){f=1;break;}}if(f)puts("No");else{puts("Yes");printf("%d\n",c);for(int i=1;i<=n;i++)for(int j=0;j<v[i].size();j++)printf("%d %d\n",i,v[i][j]);}for(int i=1;i<=n;i++)v[i].clear();}return 0; } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Elegant Construction HDU-5813 构造的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。