每日一題 強盜團夥

2021-10-22 14:31:10 字數 1404 閱讀 3614

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老師的方法二 仍舊轉化為動態規劃,但是為節省空間不再開個...