洛谷P1330 封鎖陽光大學

2022-05-20 14:00:41 字數 868 閱讀 4443

題目大意:給定乙個 n 個點,m 條邊的無向圖,現在要選出圖中的乙個頂點集合,使得集合種的頂點不直接相鄰,且這張圖的所有邊都被該頂點集合覆蓋,求該頂點集合大小的最小值,若不能完成覆蓋,則輸出 impossible。

題解:由於要求集合中頂點不能相鄰,且每條邊都要被覆蓋,則對於任意一條邊來說,連線該邊的兩個頂點必有且只有乙個在該集合中。對於這種相鄰頂點不能在同乙個集合中的性質,可以考慮對圖進行染色的操作,即:相鄰頂點的顏色不同,看是否可以用兩個顏色染完整張圖而不發生衝突,染色時順便記錄下每種顏色的頂點個數,個數少的即為答案貢獻的一部分。

**如下

#include using namespace std;

const int maxv=1e4+10;

const int maxe=1e5+10;

inline int read()while(!isdigit(ch));

dowhile(isdigit(ch));

return f*x;

}struct nodee[maxe<<1];

int tot=1,head[maxv];

int n,m,ans,sum[2];

bool vis[maxv],cor[maxv];

inline void add_edge(int from,int to),head[from]=tot;

}void read_and_parse()

}bool dfs(int u,int c)

void solve()

ans+=min(sum[0],sum[1]);

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

}int main()

洛谷 P1330 封鎖陽光大學

曹是乙隻愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園裡刷街。河蟹看到歡快的曹,感到不爽。河蟹決定封鎖陽光大學,不讓曹刷街。陽光大學的校園是一張由n個點構成的無向圖,n個點之間由m條道路連線。每只河蟹可以對乙個點進行封鎖,當某個點被封鎖後,與這個點相連的道路就被封鎖了,曹就無法在與這些道路上...

洛谷 P 1330 封鎖陽光大學

題目描述 曹是乙隻愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園裡刷街。河蟹看到歡快的曹,感到不爽。河蟹決定封鎖陽光大學,不讓曹刷街。陽光大學的校園是一張由n個點構成的無向圖,n個點之間由m條道路連線。每只河蟹可以對乙個點進行封鎖,當某個點被封鎖後,與這個點相連的道路就被封鎖了,曹就無法在與...

洛谷 P1330 封鎖陽光大學

曹是乙隻愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園裡刷街。河蟹看到歡快的曹,感到不爽。河蟹決定封鎖陽光大學,不讓曹刷街。陽光大學的校園是 一張由n個點構成的無向圖,n個點之間由m條道路連線。每只河蟹可以對乙個點進行封鎖,當某個點被封鎖後,與這個點相連的道路就被封鎖了,曹就無法在與這些道路...