/*
* uva 818
*理解了題意和水題差不多
**條件:一些可能相同的無向邊
**要求:
* 構建乙個滿足如下三個要求的圖
* 一、不能有環
* 二、連成一條直線
* 三、所有節點要連在一起
**操作:我們僅可以選中乙個節點來連線不同的線段
* 每當我們選中乙個節點時,該節點與其他節點的連線斷開
* 此時,節點可用於連線線段
**解法:位運算暴力列舉節點狀態(選中或未選中)
**注意:測試資料極強,注意處理相同邊
**ps:因為博主最開始沒有注意到相同邊的情況,所以
* 博主這裡其實採用了一種比較費勁的解法
**測試資料:
sample input
2 1 2 1 2 -1 -1
2 1 2 2 1 1 2 2 1 -1 -1
3 1 2 -1 -1
0sample output
set 1: minimum links to open is 0
set 2: minimum links to open is 0
set 3: minimum links to open is 1
*/#include
#include
#include
#include
using
namespace
std;
#define n 30
#define inf 0x3f3f3f3f
#define _for(i,a,b) for (int i = (a); i < (b); ++i)
int n, cnt;
int vis[n], ma[n][n];
vector
g[n];
void init()
}}int num(int x)
//檢查是否有環
bool dfs(int i, int s, int f)
return
false;
}bool check(int s)
if (res > 2) return
true;
}//檢查是否構成環
cnt = 0;
memset(vis, 0, sizeof(vis));
for (int i = 1; i <= n; ++i)
}return
false;
}int slove() }}
return ans;
}int main()
return
0;}
UVa 818 切斷圓環鏈(dfs 二進位制列舉)
題意 有n個圓環,其中有一些已經扣在了一起。現在需要開啟盡量少的圓環,使得所有圓環可以組成一條鏈,例如,有5個圓環,1 2,2 3,4 5,則需要開啟乙個圓環,如圓環4,然 後用它穿過圓環3和圓環5後再次閉合4,就可以形成一條鏈 1 2 3 4 5。思路 從n個圓環中任意選擇圓環,這就是列舉子集。所...
UVa 755 487 3279解題報告
第一道超時題目,資料量太大達到100000,如果要乙個乙個手動模擬比較,肯定會超時。看了別人的 都是用到了stl的map容器。果然是神器,如果不用map還真不知道怎麼在3秒內輸出結果。用了map是1秒多。很清晰,就沒寫注釋。include include include include includ...
uva839解題報告
題目大意就是根據幹槓平衡原理,判斷題目所給出的資料組成的天平能否平衡。注意,此天平可能包含子天平。輸入時,如果w為0,則表示包含子天平,子天平按照先左後右的方法輸入。解題思路 這是二叉樹的問題,資料的輸入就好比先序遍歷。判斷有無子節點就是判斷w是否為0 本題需要思考兩點 第乙個如何判斷子天平平和 第...