题目描述

曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。

阳光大学的校园是一张由n个点构成的无向图,n个点由m条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连的道路就被封锁了,曹就无法在这条路上刷街了。非常悲剧的一点是,河蟹是一种不和谐的生物,当两只河蟹封锁了相邻两个点时,他们就会发生冲突。

询问:最少需要多少只河蟹,可以封锁所有道路并且不发生冲突。

输入格式

第一行两个正整数,表示节点数和边数。 接下来m行,每行两个整数u,v,表示点u和点v之间有道路相连。

输出格式

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

输入输出样例

输入 #1 复制

3 3
1 2
1 3
2 3
输出 #1 复制

Impossible
输入 #2 复制

3 2
1 2
2 3
输出 #2 复制

1

说明/提示

【数据规模】
对于 n<10^5,m<10^6 保证没有重边。

2只河蟹靠着会打架。离得太远又挡不住老曹。我们可以看出,一条路要有且只有1只河蟹。而且一个点有河蟹,和他直接连接的点就不能有河蟹。利用这一点,我们可以随便找一个点开始染色,而且有无河蟹的部分是可以反转的,所以我们只要用两个变量记录放了多少只河蟹就好。如果有情况违反了规则,就直接输出Impossible。最后比较一下2种颜色的点哪个少就输出哪个就好了。存图可以用之前说的链式前向星偶。

对了,因为是正反存图,所以数组要开到m的两倍大。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cmath>
#include<cstring>
using namespace std;
long long head[30005],color[30005],bl,hs,bs,bj[30005],n,m,a1,a2,shu;
struct hehe
{
long long nxt,zd;
}a[300005];
int dfs(int wz,int ys,bool yl)
{
if(bj[wz]==1)
{
if(color[wz]==ys)
{
return true;
}
return false;
}
bj[wz]=1;
color[wz]=ys;
//cout<<wz<<" "<<ys<<endl;
if(ys==1)
{
hs++;
}else
{
bs++;
}
for(int i=head[wz];i!=0;i=a[i].nxt)
{
if(dfs(a[i].zd,1-ys,true)==false)
{
yl=false;
}
}
return yl;
}
void add(int qd,int zd)
{
bl++;
a[bl].nxt=head[qd];
a[bl].zd=zd;
head[qd]=bl;
}
int main()
{
cin>>n>>m;
for(int i=0;i<m;i++)
{
cin>>a1>>a2;
add(a1,a2);
add(a2,a1);
}
for(int i=1;i<=n;i++)
{
if(bj[i]==0)
{
hs=0;
bs=0;
if(dfs(i,0,true)==false)
{
cout<<"Impossible"<<endl;
return 0;
}
shu+=min(hs,bs);
}
}
cout<<shu<<endl;
return 0;
}

 代码就这么结束了,大家自己试试吧。

P1330 封锁阳光大学(洛谷)的更多相关文章

  1. AC日记——封锁阳光大学 洛谷 P1330

    封锁阳光大学 思路: bfs染色: 如果当前点能通往已染色的点则不能完成: 图不一定联通: 来,上代码: #include <queue> #include <cstdio> ...

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

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

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

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

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

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

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

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

  6. luogu P1330 封锁阳光大学 x

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

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

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

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

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

  9. 洛谷P1330 封锁阳光大学

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

  10. 洛谷 P1330 封锁阳光大学 Label:染色问题

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

随机推荐

  1. 微信小程序踩坑之前端问题处理篇

    近期完成了一个小程序,自己做的前后端开发.真是惨哭我了o(╥﹏╥)o,下面几点希望大家可以避雷. 首先,想先介绍一下我遇到问题的解决思路: 1.先在postman调试接口,看数据获取是否正常, 2.在 ...

  2. < react router>: (路由)

    < react router> (路由): 思维导图: Atrial   文件夹下的index.js 文件内容: import React, { Component } from 'rea ...

  3. Linux上的Systemctl命令

    LinuxSystemctl是一个系统管理守护进程.工具和库的集合,用于取代System V.service和chkconfig命令,初始进程主要负责控制systemd系统和服务管理器.通过Syste ...

  4. JavaWeb网上图书商城完整项目--day02-2.regist页面输入框得到焦点隐藏label

    实现当光标输入在输入输入框的时候,将后面的内容隐藏,例如在用户名称输入信息的时候,后面的用户名不能为空隐藏 我们来看看regist.js的代码: //该函数在html文档加载完成之后会调用 $(fun ...

  5. Java 多线程基础(十一)线程优先级和守护线程

    Java 多线程基础(十一)线程优先级和守护线程 一.线程优先级 Java 提供了一个线程调度器来监控程序启动后进去就绪状态的所有线程.线程调度器通过线程的优先级来决定调度哪些线程执行.一般来说,Ja ...

  6. 入门大数据---SparkSQL外部数据源

    一.简介 1.1 多数据源支持 Spark 支持以下六个核心数据源,同时 Spark 社区还提供了多达上百种数据源的读取方式,能够满足绝大部分使用场景. CSV JSON Parquet ORC JD ...

  7. nginx 注释配置及详解

    前言 DMZ(Demilitarized Zone) 非军事区,生产环境 WEB 服务部署的区域,公司的架构为一台nginx 充当 load balance 服务,负载到两台 nginx 上面,反向代 ...

  8. IIS 发布页面后或者vs平台运行后显示“未能加载文件或程序集“WebApi”或它的某一个依赖项。试图加载格式不正确的程序。”

    一般情况下出现这样的问题是因为.dll文件不存在或者路径不正确. 但今天我遇到的情况都不在这两个内. 我确定.dll文件是存在的,路径也是正确的. 但是程序死活都是“未能加载文件或程序集“xxx”或它 ...

  9. 开放api接口参数 app_id, app_key, app_secret 的理解

    看到知乎上一个回答很形象: app_id, app_key, app_secret:我的身份证,银行卡号,银行卡密码 (完)

  10. 远程登录LINUX

    远程登录LINUX LINUX 大多数应用于服务器,因此我们一般都是用远程登录的方式访问系统,windows的操作系统远程访问Linux的操作系统,我们需要另外安装终端软件,如Scure CRT,PU ...