1920 年的芝加哥,出現了一群強盜。
如果兩個強盜遇上了,那麼他們要麼是朋友,要麼是敵人。
而且有一點是肯定的,就是:
我朋友的朋友是我的朋友;
我敵人的敵人也是我的朋友。
兩個強盜是同一團夥的條件是當且僅當他們是朋友。
現在給你一些關於強盜們的資訊,問你最多有多少個強盜團夥。
輸入格式
第一行包含整數 n,表示強盜的個數(從 1 編號到 n)。
第二行包含整數 m,表示關於強盜的資訊條數。
接下來 m 行,每行可能是 f p q 或是 e p q ,f 表示 p 和 q 是朋友,e 表示 p 和 q 是敵人。
輸入資料保證不會產生資訊的矛盾。
輸出格式
輸出只有一行,表示最大可能的團夥數。
資料範圍
2≤n≤1000,
1≤m≤5000,
1≤p,q≤n
輸入樣例
6
4e 1 4
f 3 5
f 4 6
e 1 2
輸出樣例
3
分析:
朋友和朋友連線在同一棵樹上,同一棵樹代表乙個朋友圈(朋友的朋友也是朋友)。
將每個人的敵人儲存在vector陣列中,乙個人的所有敵人都是朋友(我的敵人的敵人是我的朋友)。
#include
#include
#include
#include
using
namespace std;
const
int n =
1010
;int fa[n]
;vector<
int> e[n]
;int n, m;
intget
(int x)
//查詢根節點,同一根節點上的都是朋友
void
merge
(int a,
int b)
//朋友連線在一棵樹上
intmain()
}for
(int i =
1;i <= n;i++
)for
(int i =
1;i <= n;i++
)//根節點不變的都是每個朋友圈的頭兒
cout << res << endl;
return0;
}
每日一題 1
題目詳情 peter喜歡玩數字遊戲,但數獨這樣的遊戲對他來說太簡單了,於是他準備玩乙個難的遊戲。遊戲規則是在乙個n n的 裡填數,規則 對於每個輸入的n,從左上角開始,總是以對角線為起點,先橫著填,再豎著填。這裡給了一些樣例,請在樣例中找到規律並把這個n n的 列印出來吧。輸入描述 多組測試資料 資...
每日一題2018 3 21
leetcode 2 模擬十進位制運算考察單鏈表基本操作。題無難點,個人基礎需要提高。definition for singly linked list.struct listnode class solution while p while q if shi val s next null ret...
每日一題2018 3 22
leetcode 03 最長不重複子串 第一反應就是動態規劃。看到了網上的方法一。直接把問題簡化為找兩個重複字元間的最長距離,太巧妙了!class solution if i idx max locs s i i return max ling老師的方法二 仍舊轉化為動態規劃,但是為節省空間不再開個...