题目链接:https://www.luogu.org/problemnew/show/P1330

这个题有意思,如果能想到染色,就会很简单,但若想不到就很麻烦

要想把一条边封锁,就必须且只能占据这条边连接的两个点中的一个,于是,使用两种颜色进行染色,使相邻的两个点的颜色不同,

如果从一个点出发染色,还能再回到这个点,并且染的颜色与第一次染的颜色不同,就意味着无法封锁所有道路

如果可以,所有同一种颜色的位置表示一种河蟹的分布方法,也就是说在图中同时有两种分布方法,我们选择其中染色数少的那一种

如果图不是连通的,那在每一次DFS时,需要重置染色数

 #include <bits/stdc++.h>
using namespace std;
const int maxn = ;
vector<int> G[maxn];
int used[maxn];
int col[maxn];
int white,black; bool dfs(int t,int color){
if(used[t]){
if(color == col[t])
return true;
else
return false;
}
else{
used[t] = ;
col[t] = color;
if(color)
black++;
else
white++;
bool ans = true;
for(int i=;i<G[t].size();++i){
ans = dfs(G[t][i],-color);
if(!ans)
break;
}
return ans;
}
} int main()
{
int n,m,sum = ;
cin>>n>>m;
for(int i=;i<m;++i){
int a,b;
cin>>a>>b;
G[a].push_back(b);
G[b].push_back(a);
}
bool ans;
for(int i=;i<=n;++i){
white = black = ;
if(!used[i])
ans = dfs(i,);
if(!ans)
break;
sum += min(white,black);
}
if(!ans)
cout<<"Impossible";
else
cout<<sum;
return ;
}

P1330 封锁阳光大学 DFS+染色的更多相关文章

  1. P1330 封锁阳光大学(染色问题)

    P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...

  2. 洛谷P1330 封锁阳光大学(二分图染色)

    P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...

  3. P1330 封锁阳光大学 DFS

    题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...

  4. P1330 封锁阳光大学[搜索+染色]

    题目来源:洛谷 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图 ...

  5. 洛谷P1330封锁阳光大学[二分图染色]

    题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...

  6. Luogu P1330 封锁阳光大学 (黑白染色)

    题意: 无向图,给一个顶点染色可以让他相邻的路不能通过,但是相邻顶点不能染色,求是否可以让所有的路不通,如果可以求最小染色数. 思路: 对于无向图中的每一个连通子图,都只有两种染色方法,或者染不了,直 ...

  7. P1330 封锁阳光大学——深度优先搜索DFS

    P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由 \(n ...

  8. 二分图染色模板(P1330 封锁阳光大学)

    二分图染色模板(P1330 封锁阳光大学) 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校 ...

  9. 洛谷——P1330 封锁阳光大学

    P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...

随机推荐

  1. 绘图和数据可视化工具包——matplotlib

    一.Matplotlib介绍 Matplotlib是一个强大的Python**绘图**和**数据可视化**的工具包. # 安装方法 pip install matplotlib # 引用方法 impo ...

  2. arcgis版接合图表5.2 免费软件,支持国家2000坐标系,ArcGIS10.0,ArcGIS10.1,ArcGIS10.2都可以使用

    下载地址:http://files.cnblogs.com/gisoracle/jionmap52.rar 1.      国家2000,西安80,北京54.坐标系的接合图表生成.根据经纬度范围,坐标 ...

  3. Android图片处理--全景查看效果

    PS:Android对于图片处理这块资源还是挺多的,之前用OpenGL制作图片的全景效果,耗时耗力,而且只能点击进去后看到,但是效果是非常的号,今天所写的是编写好的一个图片控件,只要拿来用就可以了.效 ...

  4. 生成centos7 安装脚本

    [root@us-1-217 install]# cat gen7.py #!/usr/bin/env python # -*- coding: utf-8 -*- import os, crypt ...

  5. 定时备份SQL Server数据库

    一.手动备份: 1.整个数据库备份:选择数据库 => 右键任务 => 备份: 2.导出一张表的框架:选择表 => 编写表脚本为 => CREATE到: 3.导出一张表的数据:  ...

  6. day008-File文件

    1. File 文件和目录路径名的抽象表示形式. 一个File类对象就代表了一个文件或文件夹. 1.1 File类的作用 用来操作硬盘上的文件或文件夹 绝对路径:一般是以盘符开始的,比如:C:/Jav ...

  7. bind 详解

    请看我的有道云笔记: http://note.youdao.com/noteshare?id=eaf4194473cf4294776fbc263ffe6b89&sub=5CB214C594E0 ...

  8. jquery在IE8上使用find的问题

    有一个字符串,其中是一个XML文件的内容,但是使用find方法老是不正确(IE8,其他浏览器如Chrome.Firefox),代码如下: var xml="<ServiceResult ...

  9. 关于git的使用

    一.关于GIT Git --- The stupid content tracker, 傻瓜内容跟踪器.Linus Torvalds 是这样给我们介绍 Git 的.   Git 是用于 Linux内核 ...

  10. 【[TJOI2017]城市】

    题目 好像\(noip\)之前做某雅礼的题的时候看到过这道题的数据范围增强版 当时那道题数据范围是\(3e5\)感觉神仙的一批 这道题数据范围\(5e3\)那岂不是可以\(O(n^2)\)水过 有一点 ...