luogu P1330 封锁阳光大学 x
P1330 封锁阳光大学
题目描述
曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。
阳光大学的校园是一张由N个点构成的无向图,N个点之间由M条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连的道路就被封锁了,曹就无法在与这些道路上刷街了。非常悲剧的一点是,河蟹是一种不和谐的生物,当两只河蟹封锁了相邻的两个点时,他们会发生冲突。
询问:最少需要多少只河蟹,可以封锁所有道路并且不发生冲突。
输入输出格式
输入格式:
第一行:两个整数N,M
接下来M行:每行两个整数A,B,表示点A到点B之间有道路相连。
输出格式:
仅一行:如果河蟹无法封锁所有道路,则输出“Impossible”,否则输出一个整数,表示最少需要多少只河蟹。
输入输出样例
【输入样例1】
3 3
1 2
1 3
2 3 【输入样例2】
3 2
1 2
2 3
【输出样例1】
Impossible 【输出样例2】
1
说明
【数据规模】
1<=N<=10000,1<=M<=100000,任意两点之间最多有一条道路。
思路:
1)黑白染色
2)利用bfs分层搜索的性质,注意要分层!!!
3)如果一个点搜索到一个与自己同色的点,证明不存在合法方案!
4)各个联通块分开累加答案!
5)答案就是当前联通块内部的黑色与白色的最小值!
坑点:
1)别信数据范围qwq
2)注意可能存在的好几个联通块的情况!
代码:
#include <iostream>
#include <cstdio>
#include <queue>
#include <cmath>
using namespace std; const int M = ;
int n,m,tot,ans;
int head[M],a[M],steps[M],w[M],colors[];
bool QAQ,vis[M]; struct B{
int next,to;
}t[M]; void add(int u,int v)
{
tot++;
t[tot].to=v;
t[tot].next=head[u];
head[u]=tot;
} void bfs(int u)
{
for(int i=;i<=n;i++)
w[i]=,steps[i]=;
int fr=,sz=;
colors[]=colors[]=;
steps[]=;
w[]=u;
a[u]=;
vis[u]=true;
while(fr<sz)
{
fr++;
int now=w[fr];
for(int i=head[now];i;i=t[i].next)
{
int v=t[i].to;
if(a[v]==a[now])
{
QAQ=false;
return;
}
if(!vis[v])
{
vis[v]=true;
sz++;
w[sz]=v;
steps[sz]=steps[fr]+;
if(steps[sz] % == )
a[v]=;
else
if(steps[sz] % == )
a[v]=;
}
}
}
for(int i=;i<=sz;i++)
colors[a[w[i]]]++;
ans+=min(colors[],colors[]);
} int main()
{
scanf("%d%d",&n,&m);
for(int i=,a,b;i<=m;i++)
{
scanf("%d%d",&a,&b);
add(a,b),add(b,a);
}
for(int i=;i<=n;i++)
{
if(!vis[i])
{
QAQ=true;
bfs(i);
if(!QAQ)
{
printf("Impossible\n");
return ;
}
}
}
cout<<ans;
return ;
}
luogu P1330 封锁阳光大学 x的更多相关文章
- Luogu P1330 封锁阳光大学
这是一道神坑题! 刚开始看了题还以为是Tarjan(我也不知道Tarjan有什么用). 然后发现这是染色问题的模板题! 找到没有染色的点,然后将它涂成1(一共只有1,2两种颜色) 与它相连的点进行广搜 ...
- Luogu P1330 封锁阳光大学【Dfs】 By cellur925
题目传送门 这道题我们很容易去想到二分图染色,但是这个题好像又不是一个严格的二分图. 开始的思路:dfs每个点,扫与他相邻的每个点,如果没访问,染相反颜色:如果访问过,进行检查,如果不可行,直接结束程 ...
- Luogu P1330 封锁阳光大学 (黑白染色)
题意: 无向图,给一个顶点染色可以让他相邻的路不能通过,但是相邻顶点不能染色,求是否可以让所有的路不通,如果可以求最小染色数. 思路: 对于无向图中的每一个连通子图,都只有两种染色方法,或者染不了,直 ...
- 洛谷——P1330 封锁阳光大学
P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...
- P1330 封锁阳光大学(染色问题)
P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...
- 洛谷P1330 封锁阳光大学(二分图染色)
P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...
- 二分图染色模板(P1330 封锁阳光大学)
二分图染色模板(P1330 封锁阳光大学) 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校 ...
- P1330 封锁阳光大学——深度优先搜索DFS
P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由 \(n ...
- 洛谷P1330封锁阳光大学[二分图染色]
题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...
随机推荐
- 与高精死杠的几天——记两道简单的高精dp
(同样也是noip往年的题 1.矩阵取数游戏 题目链接[Luogu P1005 矩阵取数游戏] \(\mathcal{SOLUTION}:\) 通过对题目条件的分析,我们可以发现,每一行取数对答案的 ...
- jinja2 模板相关
安装 pip install jinja2 配置模板 settings.py 60行左右 TEMPLATES = [ { 'BACKEND': 'django.template.backends.dj ...
- Mac OS 下定制终端颜色
方法 有五种方法, 参考网站,我使用的是 Oh My Zsh 方案一:(通过 .bash_profile 文件自定制) 方案二:(也是修改 ~/.bash_profile) 方案三:(三方插件 Oh ...
- Codeforces 1216F. Wi-Fi
传送门 这个题一眼 $dp$ 就是设 $f[i][0/1]$ 表示我们只考虑前 $i$ 个位置,并且保证覆盖了前 $i$ 个位置,当前位置 选/不选 的最小代价 考虑转移,设题目给出的字符串为 $s$ ...
- Java 类的构造器中this()和super()的困惑
关于构造器中super的使用,书本上这样写: “super是指向父类的引用,如果构造方法没有显示地调用父类的构造方法,那么编译器会自动为它加上一个默认的super()方法调用.如果父类由没有默认的无参 ...
- wepy 使用filter过滤器
作为过滤器,filter的好处不言而喻,使用过vue的雄蝶内心乐开了花 那么在wepy中,遇到需要计算的数据,要如何使用filter去处理呢 新建.wxs文件 文件名称.位置自己看着来,当然能够一目了 ...
- luogu P5366 [SNOI2017]遗失的答案
luogu 首先gcd为\(G\),lcm为\(L\),有可能出现的数(指同时是\(G\)的因数以及是\(L\)的倍数)可以发现只有几百个.如果选出的数要能取到gcd,那么对于每种质因子,都要有一个数 ...
- luogu P4755 Beautiful Pair
luogu 这题有坨区间最大值,考虑最值分治.分治时每次取出最大值,然后考虑统计跨过这个位置的区间答案,然后两边递归处理.如果之枚举左端点,因为最大值确定,右端点权值要满足\(a_r\le \frac ...
- Flask-migrate基本使用方法
数据库迁移操作顺序: 1.python 文件 db init 2.根据需求修改模型 3.python flaskapp文件 db migrate -m"新版本名(注释)" 4.py ...
- Go语法的基本使用(三)
// 长度 vs 容量. // 长度是目前里面有几个值 // 容量是最多能放多少个值 func main(){ var a =make(chan int,4) a<-1 a<-2 a< ...