首页 > TAG信息列表 > P1330
洛谷p1330
题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。 阳光大学的校园是一张由 n 个点构成的无向图,n 个点之间由 m 条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个P1330 封锁阳光大学
01染色,取染色个数较小的。 注意图不一定联通。 #include<cstdio> #include<iostream> #include<cstring> using namespace std; const int N=100005; int n,m; int head[N]; int c[N]; bool vis[N]; int sum[2]; int tot,ans; int read(){ int num=0,f=1; char c=getchar();[二分图染色]洛谷 P1330 封锁阳光大学
题目链接 题目所给出的图 是一个无向且不联通的图;要求最小的螃蟹数,也就是求每个联通子图的最小螃蟹数,每条边只能有1个端点站螃蟹,可以跟据这个特点转化为一个二分图染色问题; 刚开始我想的是一种自认为比较正确贪心算法 贪心的把螃蟹放到度数比较大的点是对的,但是当2个点的洛谷 P1330 封锁阳光大学
题目传送门 解题思路: 我们将整个图的所有点分别染成两种颜色,例如绿色和黄色,我们每选一个点,就将它染成绿色,并将所有与它相连的点染成黄色. 在染色过程中,如果发现相邻的两个点是同一种颜色,则说明impossible. 如果成功染完全图,就看选绿色更优还是黄色更优. AC代码: 1 #incluP1330 封锁阳光大学
链接:P1330 -------------------------------- 一道超级大坑题。 一开始我以为是再一个无图染色,结果竟然有一对不相通的子图。 而且还有单独一个点。 这样就麻烦了 --------------------------------- 一个图染色,要求相邻的点颜色不相通,如果存在,那么把每个点的颜色颠倒也可以。 再这P1330 封锁阳光大学
题目来源:洛谷 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个洛谷 P1330 封锁阳光大学
分析题目,我们可以发现:由于要把每条边都封锁了,而一条边必有两个端点,说明这两个端点必定要有一个放上河蟹。据此,我们枚举一个点i,将他先放上河蟹,然后对于他的所有由边连出去的点,都不用放河蟹,而这些点再又通过连出去的边所连到的点,就必须放河蟹了,由此进行DFS,直到每个点都确定放或不放上[LGOJ]P1330 封锁阳光大学[图的黑白染色, dfs]
可以发现选了一个点后(染黑),他连着的点全都不能选了(染白). 又要求封锁所有道路,所以转化成图的黑白染色问题来做. #include<cstdio> #define re register inline int read() { int s=0,b=1; char ch; do{ ch=getchar(); if(ch=='-') b=-1; }whil