[1143] [CTSC2008]祭祀river(最大独立集 || 偏序集最大反链)
2017-05-16 08:34
417 查看
网上说这是偏序集最大反链,然而我实在不理解。
所以我换了一个思路,先用floyd,根据点的连通性连边,
问题就转换成了找出最多的点,使任意两个点之间不连边,也就是最大独立集。
——代码
#include <cstdio> #include <cstring> #include <iostream> const int MAXN = 101; int n, m, ans, cnt; int a[MAXN][MAXN], belong[MAXN], head[MAXN], to[MAXN << 6], next[MAXN << 6]; bool vis[MAXN]; inline int read() { int x = 0; char c = getchar(); for(; !isdigit(c); c = getchar()); for(; isdigit(c); c = getchar()) x = (x << 1) + (x << 3) + c - '0'; return x; } inline bool find(int u) { int i, v; for(i = head[u]; i ^ -1; i = next[i]) { v = to[i]; if(!vis[v]) { vis[v] = 1; if(!belong[v] || find(belong[v])) { belong[v] = u; return 1; } } } return 0; } inline void add(int x, int y) { to[cnt] = y; next[cnt] = head[x]; head[x] = cnt++; } int main() { int i, j, k, x, y; n = read(); m = read(); for(; m--;) { x = read(); y = read(); a[x][y] = 1; } for(k = 1; k <= n; k++) for(i = 1; i <= n; i++) for(j = 1; j <= n; j++) a[i][j] |= (a[i][k] && a[k][j]); memset(head, -1, sizeof(head)); for(i = 1; i <= n; i++) for(j = 1; j <= n; j++) if(a[i][j]) add(i, j); ans = n; for(i = 1; i <= n; i++) { memset(vis, 0, sizeof(vis)); ans -= find(i); } printf("%d\n", ans); return 0; }View Code
相关文章推荐
- BZOJ 1143: [CTSC2008]祭祀river 最大独立集
- bzoj 1143:[CTSC2008]祭祀river 二分图最大独立集
- 【bzoj1143 CTSC2008】祭祀river(最大独立集--二分图匹配)
- BZOJ 1143: [CTSC2008]祭祀river 二分图,最大独立集,Floyd闭包
- BZOJ 1143: [CTSC2008]祭祀river 二分图最大点独立集
- [BZOJ 1143][CTSC 2008]祭祀river(二分图最大独立集)
- [二分图最大独立集]BZOJ 1143—— [CTSC2008]祭祀river
- BZOJ 1143: [CTSC2008]祭祀river(二分图最大点独立集)
- 【BZOJ1143】【CTSC2008】祭祀river 传递闭包、最大点独立集(网络流写的)
- [BZOJ1143][CTSC2008]祭祀river(最长反链)
- [bzoj1143][CTSC2008]祭祀river 最大独立集+floyd
- bzoj 1143: [CTSC2008]祭祀river 求最长反链:网络流
- 2718: [Violet 4]毕业旅行/1143: [CTSC2008]祭祀river 最长反链=最小边覆盖
- bzoj 1143: [CTSC2008]祭祀river(Floyed+二分图的最大匹配)
- BZOJ 1143: [CTSC2008]祭祀river 最长反链
- BZOJ1143(CTSC2008)[祭祀river]--传递闭包+二分图最大匹配(求最长反链)
- 最长反链(bzoj 1143: [CTSC2008]祭祀river)
- [BZOJ 1143] [CTSC2008] 祭祀river 【最长反链】
- 【bzoj1143: [CTSC2008]祭祀river】有向无环图的最长反链
- BZOJ 1143 祭祀river【二分图之偏序集的最大反链】