CQOI2018 社交網路

2021-08-19 13:16:20 字數 1441 閱讀 1421

當今社會,在社交網路上看朋友的訊息已經成為許多人生活的一部分。通常,乙個使用者在社交網路上發布一條訊息

(例如微博、狀態、tweet等)後,他的好友們也可以看見這條訊息,並可能**。**的訊息還可以繼續被人轉

發,進而擴散到整個社交網路中。在乙個實驗性的小規模社交網路中我們發現,有時一條熱門訊息最終會被所有人

**。為了研究這一現象發生的過程,我們希望計算一條訊息所有可能的**途徑有多少種。為了程式設計方便,我們

將初始訊息傳送者編號為1,其他使用者編號依次遞增。該社交網路上的所有好友關係是已知的,也就是說對於a、b

兩個使用者,我們知道a使用者可以看到b使用者傳送的訊息。注意可能存在單向的好友關係,即a能看到b的訊息,但b不

能看到a的訊息。

還有乙個假設是,如果某使用者看到他的多個好友**了同一條訊息,他只會選擇從其中乙個**,最多**一次消

息。從不同好友的**,被視為不同的情況。

如果用箭頭表示好友關係,下圖展示了某個社交網路中訊息**的所有可能情況。

初始訊息是使用者1傳送的,加粗箭頭表示一次訊息**

輸入檔案第一行,為乙個正整數n,表示社交網路中的使用者數:

第二行為乙個正整數m.表示社交網路中的好友關係數目。

接下來m行,每行為兩個空格分隔的整數ai和bi,表示一組好友關係,即使用者ai可以看到使用者bi傳送的訊息。

1≤n≤250,1≤ai,bi≤n,1≤m≤n(n-1)

輸出檔案共一行,為一條訊息所有可能的**途徑的數量,除以1 0007所得的餘數。 4

72 1

3 11 3

2 33 2

4 34 2

6solution

一眼矩陣樹定理模板題,省選出這個真的。

用出度矩陣和臨接矩陣相減構造基爾霍夫矩陣,求矩陣行列式。

code

#include #include #define r register

#define ll long long

using namespace std;

namespace dntcry

const int mod = 10007;

int n, m, map[310][310], inv[10010], ans;

int guass()

for(j = i + 1; j <= n; j++)

if(map[j][i])

} for(r int i = 2; i <= n; i++) res = res * max(map[i][i], 1) % mod;

return res;

} int main()

ans = guass();

printf("%d\n", ans);

return 0; }}

int main()

CQOI2018 解鎖螢幕

使用過android手機的同學一定對手勢解鎖螢幕不陌生。android的解鎖螢幕由3x3個點組成,手指在螢幕上畫一條 線將其中一些點連線起來,即可構成乙個解鎖圖案。如下面三個例子所示 畫線時還需要遵循一些規則 1 連線的點數不能少於4個。也就是說只連線兩個點或者三個點會提示錯誤。2 兩個點之間的連線...

CQOI2018 解鎖螢幕

其實只有開了o2才能a.就是我們看到n的範圍這麼小,就想到狀壓dp。然後我們設狀態dp i 表示狀態為i的 二進位制表示該點選或者不選 方案數有多少個。但是我們發現因為還要列舉轉移下乙個點,所以我們還要記錄一下最後的那個點是什麼。於是我們修改狀態為 dp i j 表示當前狀態為i,最後乙個點的編號為...

CQOI 2018 解鎖螢幕

洛谷傳送門 使用過android 手機的同學一定對手勢解鎖螢幕不陌生。android 的解鎖螢幕由3x3 個點組成,手指在螢幕上畫一條線,將其中一些點連線起來,即可構成乙個解鎖圖案。如下面三個例子所示 畫線時還需要遵循一些規則 連線的點數不能少於4 個。也就是說只連線兩個點或者三個點會提示錯誤。兩個...