問題描述
n個人參加某項特殊考試。
為了公平,要求任何兩個認識的人不能分在同乙個考場。
求是少需要分幾個考場才能滿足條件。
輸入格式
第一行,乙個整數n(1輸出格式
一行乙個整數,表示最少分幾個考場。
樣例輸入58
1 21 3
1 42 3
2 42 5
3 44 5
樣例輸出
4樣例輸入510
1 21 3
1 41 5
2 32 4
2 53 4
3 54 5
樣例輸出
5
1 #include2 #include3using
namespace
std;45
const
int max_n = 100;6
const
int inf = 100000;7
8//輸入9
intn,m;
1011
bool acq[max_n+1][max_n+1] = ;//
acq[i][j]=true i與j考生認識
12 vector room[max_n]; //
考場13
int res = inf; //
儲存最優解
1415
//id:學生編號 num:當前考場最大編號
16void dfs( int id, int
num )
17
21if( id==n+1 )
2526
for( int i=0; i)
2736}37
if( !flag )
38 43}
4445
//新開考場
46room[num].push_back( id );
47 dfs( id+1, num+1
);48
room[num].pop_back();
49}
5051
void
solve()
5257
58int
main()
5967
68solve();
6970
return0;
71 }
藍橋杯 歷屆試題 分考場 DFS
時間限制 1.0s 記憶體限制 256.0mb n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。第一行,乙個整數n 1一行乙個整數,表示最少分幾個考場。5 81 2 1 31 4 2 32 4 2 53 4 4 55 101 2 1 31 ...
藍橋杯 歷屆試題 分考場 (dfs回溯)
題目連線 題意 很明顯了。思路 暴力搜尋 剪支 每新加進來乙個人,都與已經開設的教室裡面的人進行對比,如果找到乙個教室滿足,教室裡面所有的人都不和新加入的人認識,那麼就考慮將這個人加進來。再回溯。最後,當所有教室都不滿足的時候,新增教室。反思 dfs回溯有待提高 include using name...
藍橋杯 歷屆試題 分考場
問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1輸出格式 一行乙個整數,表示最少分幾個考場。樣例輸入5 8 1 2 1 3 1 4 2 3 2 4 2 5 3 4 4 5樣例輸出 4樣例輸入5 10...