分考場 DFS 染色問題

2021-10-08 02:49:52 字數 1057 閱讀 2347

資源限制

時間限制:1.0s   記憶體限制:256.0mb

問題描述

n個人參加某項特殊考試。

為了公平,要求任何兩個認識的人不能分在同乙個考場。

求是少需要分幾個考場才能滿足條件。

輸入格式

第一行,乙個整數n(1輸出格式

一行乙個整數,表示最少分幾個考場。

樣例輸入58

1 21 3

1 42 3

2 42 5

3 44 5

樣例輸出

樣例輸入510

1 21 3

1 41 5

2 32 4

2 53 4

3 54 5

樣例輸出

#include#include#includeusing namespace std;

int gra[200][200]; // 記錄兩個人之間的關係,gra[i][j] == 1 代表 i 和 j 認識

int vis[200][200]; // vis[i][j] == 1 代表第 i 間教室的第 j 人在這間教室。

int n,m;

int c[200]; // c[i] 表示第 i 個房間的人數

int ans; // 最終答案

int flag; // 在 dfs 中用於判斷當前 s 是否能分配給當前教室

void dfs(int s, int tot, int num) // s 為當前的人,tot 為當前一共分配的教室,num 為當前分配到了多少人了

if(num == n)

for(int i = 1; i <= tot; i ++)

}if(flag)

}vis[tot+1][++c[tot+1]] = s;

dfs(s+1,tot+1,num+1);

--c[tot+1];

}int main()

ans = n;

dfs(1,0,0);

printf("%d\n",ans);

return 0;

}

歷屆試題 分考場(DFS,染色問題)

歷屆試題 分考場 時間限制 1.0s 記憶體限制 256.0mb 問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1樣例輸出 4樣例輸入 5 101 2 1 31 4 1 52 3 2 42 5 3 ...

歷屆試題 分考場 dfs

問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1 public class 分考場 dfs 1 system.out.println num 為所有的學生編排考場 param id 學生的id pa...

藍橋杯 分考場(dfs)

dfs求解 思路每次判斷輸入的人是否可以和前面的組隊 問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1 ans return if p n 1 for int i 1 i kans i 判斷完前面已...