第一行兩個整數n,m。1<=n<=10000,1<=m<=1000000.表示有n個人,m對認識關係. 接下來m行每行輸入一對朋
友輸出乙個整數,最少可以分多少隊
4 51 2
1 42 4
2 33 4
3一種方案(1,3)(2)(4)
我們把每個人都看做乙個點,認識關係看做一條邊,那麼,「最少分多少支隊」就是圖的最小染色數。
我們知道,一般圖的染色數是npc問題,但是由於題目中的「禁止四邊關係」等,可以發現其沒有長度大於3的無弦環。
那麼,這就是在求弦圖的染色,直接套mcs演算法按完美消除序列逆序染色即可。
具體細節請參照 陳丹琦 《弦圖與區間圖》
附**:
#include #include #include #include const int n = 10050;const int m = 1050000;
struct nodenodes[m];
int cnt;
int pre[n], to[m * 2], nxt[m * 2];
int head[n];
int f[n], p[n];
bool vis[n];
int n, m;
inline void add(int h, int v)
void mcs()
x = nodes[x].v;
vis[p[j] = x] = 1;
for (i = pre[x]; ~i; i = nxt[i])
break;
}}int cnt2;
inline void addedge(int u, int v)
inline int readint() while (isdigit(c));
return ans;
}int mark[n], color[n];
int main()
mcs();
memset(color, 0, sizeof color);
memset(mark, 0, sizeof mark);
int ans = 0;
for (int j = n; j; --j)
printf("%d\n", ans);
return 0;
}
狡猾的商人 bzoj1202,HNOI2005
ac通道 分析 因為每月的總收入可以為正,也可以為負,所以要比較兩個區間是否相符,當且僅當它們邊界都相同時才能比較。我們設w i 表示第1 i個月的總收入與第1 fa i 1 個月的總收入之差,及第fa i i個月的總收入。如圖。若i 1,j在同乙個集合中,則第i j個月的總收入為w j w i 1...
bzoj1006 hnoi2008 神奇的國度
time limit 20 sec memory limit 162 mb submit 2379 solved 1074 submit status discuss 第一行兩個整數n,m。1 n 10000,1 m 1000000.表示有n個人,m對認識關係.接下來m行每行輸入一對朋友 輸出乙個整...
BZOJ1006 HNOI2008 神奇的國度
time limit 20 sec memory limit 162 mb submit 3217 solved 1446 submit status discuss k國是乙個熱衷三角形的國度,連人的交往也只喜歡三角原則.他們認為三角關係 即ab相互認識,bc相互認識,ca 相互認識,是簡潔高效的...