在很久很久以前,曾經有兩個國家和睦相處,無憂無慮的生活著。一年一度的評比大會開始了,作為和平的兩國,乙個朋友圈數量最多的永遠都是最值得他人的尊敬,所以現在就是需要你求朋友圈的最大數目。
兩個國家看成是ab兩國,現在是兩個國家的描述:
1. a國:每個人都有乙個友善值,當兩個a國人的友善值a、b,如果a xor b mod 2=1,
那麼這兩個人都是朋友,否則不是;
2. b國:每個人都有乙個友善值,當兩個b國人的友善值a、b,如果a xor b mod 2=0
或者 (a or b)化成二進位制有奇數個1,那麼兩個人是朋友,否則不是朋友;
3. a、b兩國之間的人也有可能是朋友,資料中將會給出a、b之間「朋友」的情況。
在ab兩國,朋友圈的定義:乙個朋友圈集合s,滿足
s∈a∪ b ,對於所有的i,j∈ s ,i 和 j 是朋友
由於落後的古代,沒有電腦這個也就成了每年最大的難題,而你能幫他們求出最大朋 友圈的人數嗎?
input
第一行t<=6,表示輸入資料總數。
接下來t個資料:
第一行輸入三個整數a,b,m,表示a國人數、b國人數、ab兩國之間是朋友的對數;第二行a個數ai,表示a國第i個人的友善值;第三行b個數bi,表示b國第j個人的友善值;
第4——3+m行,每行兩個整數(i,j),表示第i個a國人和第j個b國人是朋友。
output
輸出t行,每行,輸出乙個整數,表示最大朋友圈的數目。
sample input
2 4 7
1 22 6 5 4
1 11 2
1 32 1
2 22 3
2 4sample output
【樣例說明】
最大朋友圈包含a國第1、2人和b國第1、2、3人。
hint
【資料範圍】
兩類資料
第一類:|a|<=200 |b| <= 200
第二類:|a| <= 10 |b| <= 3000
當時做的時候,一看要求就是要求乙個最大團,一般的圖求最大團是指數級的肯定不可能 ,那麼最大團可以接受的演算法就是二分圖的最大團了,nm的。
考慮二分圖的最大團的條件,即兩個集合,每個集合的元素之間互相兩兩有邊,然後兩個集合互相有邊,跑最大團但是把這兩個集合當成a和b來做的話顯然不太合適,因為首先就沒有滿足a集合或者b集合兩兩有邊的條件。
但是這道題的建邊方式不一般,肯定有什麼門道。
觀察發現a中元素的朋友的條件是友善值一奇一偶,靈光一現a最多兩個人,那我們就列舉哪兩個人,然後把他們相交的部分在b集合裡面選出來然後搞乙個最大團,但是這個最大團的複雜度嚴格來說和直接求是一致的,那還是要往二分圖上想 。
考慮b裡面是朋友的方式 ,然後想到只要都是奇數,或者都是偶數,互相之間肯定是有邊的,那麼就完全轉化成二分圖的模型了,用補圖的最大點獨立集就好。
最好不要每次memset,搞乙個時間戳什麼的比較好。
注意這道題的輸入裡面有重邊,所以判斷每次b裡面選了幾個的時候需要略略注意一下。
#include
#include
#include
#include
#include
#define n 3010
using namespace std;
struct edgeed[n * n];
vector va[n];
int a, b, m, idc=0, cc=0, tot=0, timex=0;
int head[n], mrk2[n], mrk1[n];
int a[n], b[n], lnk[n], flag[n];
void adde(int u, int v)
int find(int u)}}
return 0;
}bool check(int i, int j)
if(cnt & 1) return 1;
else return 0;
}void build()
int work()
return tot - ans;
}int main()
build();
int ans = 0;
timex++;//是否可選
for(int i=1; i<=b; i++) mrk2[i] = timex;
tot = b;
ans = max(ans, work());//不選a
for(int i=1; i<=1; i++){//選乙個a
tot = 0, timex++;
for(int j=0; j
LeetCode 求朋友圈的個數
題目描述 給定乙個二維的0 1矩陣,如果第 i,j 位置是1,則表示第i個人和第j個人是朋友.已知朋友關係是可以 傳遞的,即如果a是b的朋友,b是c的朋友,那麼a和c也是朋友,換言之這三個人處於同乙個朋友圈之內.求 一共有多少個朋友圈.示例 input 1,1,0 1,1,0 0,0,1 outpu...
朋友圈分析1
conding utf 8 from wxpy import from pyecharts import pie,bar 1 建立機械人 bot bot cache path true 2 查詢朋友 friends bot.friends search 1 3 朋友總數 total len frie...
社交名片 朋友圈
序 不管你是否承認 現在朋友圈已經間接代表你的一些個人形象 為什麼要維護朋友圈 很多人會說 朋友圈是我自己的 我想發什麼就發什麼 或者乾脆就不發朋友圈 聽起來很有道理 其實不然 朋友圈這三個字的含義就是 圍繞你聚集起的乙個朋友圈子 少則幾百人 多則幾千人 所以這並不是你乙個人的私人領地 有時候你發一...