我是靠谱客的博主 清秀马里奥,这篇文章主要介绍洛谷 P1330 封锁阳光大学(BFS染色),现在分享给大家,希望可以做个参考。

题目描述
曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。
阳光大学的校园是一张由N个点构成的无向图,N个点之间由M条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连的道路就被封锁了,曹就无法在与这些道路上刷街了。非常悲剧的一点是,河蟹是一种不和谐的生物,当两只河蟹封锁了相邻的两个点时,他们会发生冲突。
询问:最少需要多少只河蟹,可以封锁所有道路并且不发生冲突。

输入输出格式
输入格式:
第一行:两个整数N,M
接下来M行:每行两个整数A,B,表示点A到点B之间有道路相连。

输出格式:
仅一行:如果河蟹无法封锁所有道路,则输出“Impossible”,否则输出一个整数,表示最少需要多少只河蟹。

输入输出样例
输入样例#1:
【输入样例1】
3 3
1 2
1 3
2 3

【输入样例2】
3 2
1 2
2 3

【输出样例1】
Impossible

【输出样例2】
1

题解:这题就是让你给一张图染色,要求相邻点的颜色不能相同,如果相同,就输出Impossible。否则取两种颜色中较少的就是最优染色,注意图不一定都连通,所以如果还有没染色的点就继续染色,把所有图中的最优染色加起来就是答案

代码如下

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include<queue> #include<cstdlib> #include<cstdio> #include<cstring> #include<iostream> using namespace std; const int MAXV=10000+500; const int MAXE=100000+500; int first[MAXV],nxt[MAXE<<1],use[MAXV]; int m,n,tot=0,ans=0; bool vis[MAXV]; struct edge { int from,to,cost; }es[MAXE<<1]; void build(int f,int t) { es[++tot].from=f; es[tot].to=t; nxt[tot]=first[f]; first[f]=tot; } queue<int> Q; int bfs(int s) { int ans1=0,ans2=0; Q.push(s); while(!Q.empty()) { int u=Q.front(); Q.pop(); for(int i=first[u];i;i=nxt[i]) { int v=es[i].to; if(!use[v])//给相邻的点染上不同的颜色 { use[v]=use[u]==1?2:1; Q.push(v); } else if(use[v]==use[u])//如果发现冲突,输出Impossible { printf("Impossiblen"); exit(0);//退出程序 } } } for(int i=1;i<=n;i++) { if(use[i]==1&&!vis[i]) { ans1++; vis[i]=1; } else if(use[i]==2&&!vis[i]) { ans2++; vis[i]=1; } } return min(ans1,ans2);//颜色少的为最佳答案 } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int ff,tt; scanf("%d%d",&ff,&tt); build(ff,tt); build(tt,ff); } for(int i=1;i<=n;i++) { if(!use[i])//可能存在不连通的多个图 { use[i]=2; ans+=bfs(i); } } printf("%dn",ans); return 0; }

最后

以上就是清秀马里奥最近收集整理的关于洛谷 P1330 封锁阳光大学(BFS染色)的全部内容,更多相关洛谷内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部