CF 272E Dima and Horses(2-SAT变形)
2013-02-14 11:37
253 查看
题目大意:有n个点,每个点都最多有三个敌对点,要将这个n个点分成两组,而且每个组内的每个点,最多有一个敌对点和它在同一组里面。在第一组设为0, 第二组设为1;然后输出最后分配方案。
分析:以节点i为例, i有三个敌对点,如果i在0组,那么与i敌对的三个点中的两个就一定要在1组。给每个点赋值为1或0,然后使得所有节点都满足前述条件。很显然就是2-SAT问题。因为每个点虽多有3个敌对点,所以,总是有解的。
代码:
//E
//by Molly
#include <cstdio>
#define For(i, s, e ) for( int i = s; i < e; ++i )
#define N 300005
int n, m, d
, E
[5], g
;
void Sat(int x) {
int cnt = 0;
For(i, 0, d[x]) if ( g[x] == g[E[x][i]] ) cnt++;
//以下就是每个点如果不满足条件,那么就给它换组,dfs修改相关点,使得相关点满足条件
if ( cnt >= 2 ) {
g[x] ^= 1;
For(i, 0, d[x]) if ( g[x] == g[E[x][i]] ) Sat( E[x][i] );
}
}
int main()
{
scanf("%d%d", &n, &m);
For(i, 1, m+1) {
int x, y;
scanf("%d%d", &x, &y);
E[x][d[x]++] = y;
E[y][d[y]++] = x;
}
For(i, 1, n+1) Sat(i);
For(i, 1, n+1) printf("%d", g[i]);
printf("\n");
}
分析:以节点i为例, i有三个敌对点,如果i在0组,那么与i敌对的三个点中的两个就一定要在1组。给每个点赋值为1或0,然后使得所有节点都满足前述条件。很显然就是2-SAT问题。因为每个点虽多有3个敌对点,所以,总是有解的。
代码:
//E
//by Molly
#include <cstdio>
#define For(i, s, e ) for( int i = s; i < e; ++i )
#define N 300005
int n, m, d
, E
[5], g
;
void Sat(int x) {
int cnt = 0;
For(i, 0, d[x]) if ( g[x] == g[E[x][i]] ) cnt++;
//以下就是每个点如果不满足条件,那么就给它换组,dfs修改相关点,使得相关点满足条件
if ( cnt >= 2 ) {
g[x] ^= 1;
For(i, 0, d[x]) if ( g[x] == g[E[x][i]] ) Sat( E[x][i] );
}
}
int main()
{
scanf("%d%d", &n, &m);
For(i, 1, m+1) {
int x, y;
scanf("%d%d", &x, &y);
E[x][d[x]++] = y;
E[y][d[y]++] = x;
}
For(i, 1, n+1) Sat(i);
For(i, 1, n+1) printf("%d", g[i]);
printf("\n");
}
相关文章推荐
- CF 272E Dima and Horses 染色,dfs 难度:2
- Codeforces 272E Dima and Horses【玄学暴力】
- [Codeforces 272E] Dima and Horses (图染色构造)
- CF 390B:Inna, Dima and Song
- cf C. Dima and Containers
- CF10月25日比赛。(Dima and Text Messages)
- CF10月25日比赛。(Dima and Continuous Line)
- CF 272 B. Dima and Sequence
- CF-358D-Dima and Hares【T^T+*^*】
- cf D. Dima and Hares
- cf B. Dima and To-do List
- CF 273C C. Dima and Horses
- CF 272 C. Dima and Staircase
- Codeforces Round #167 (Div. 2) 272E Dima and Horses
- CF 141 div2 D(2-SAT)
- CF--Dima and Salad
- UVALIVE 4452(2-SAT变形)
- CF 358C C. Dima and Containers 离线+模拟
- cf E. Dima and Magic Guitar
- Codeforces 366C Dima and Salad (背包变形,DP好题)