未知 zi 題解

2021-08-08 05:59:44 字數 1415 閱讀 2436

//這題的名字真清奇。

【問題描述】

我們有 m+1棵樹 ,分別是 t0,t1,…,tm。其中 t0是一棵只有個點的樹,點的編號為 0。

生成第 i棵樹我們需要五個引數 ai,bi,ci,di,li(ai,bi < i)。我們生成第 。我們生成第i棵樹是 將第ai棵樹的ci號點和第bi棵樹的di號點用一條長度為li的邊連線起來形成新的樹(不會改變原來兩棵樹不會改變原來兩棵樹不會改變原來兩棵樹不會改變原來兩棵樹)。下面我們需要對新樹中的點重編號:對於原來在 第ai棵樹中的點,我們不會改變他的編號;對於原來在第 bi棵樹中的點,我們 會將他們的編號加上第ai棵樹的點個數作為新編號 。

定義 f(ti)=該樹的任意兩點的距離和。

現在希望你求出 ∀1≤i≤m,f(ti)是多少 。

【輸入格式】

第一行 乙個整數 m。

接下來每行五個整數 ai,bi,ci,di,li代表第i棵樹的生成方式 。

【輸出格式】

m行,每行乙個整數 ,代表f(ti)mod(10^9+7)的值 。

【樣例輸入】

3 0 0 0 0 2

1 1 0 0 4

2 2 1 0 3

【樣例輸出】

2 28

216

【資料規模與約定】

對於 30%的資料, 1≤m≤10。

對於 60%的資料 ,每棵 樹的點數 個數 不超過 10^5。

對於 100%的資料 ,1≤m≤60。

——————————————

直接上**。

所有思路全寫在**裡了。

(十分慚愧的借鑑了標程並且自己根據標程的理解寫了注釋)

(這題自我感覺很難tat,至少不是我這種蒟蒻能想到的……)

#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int p=1e9+7;

inline int read()

while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();

return x*w;

}structt[61];//第i棵樹

map< pair, ll > mp;

ll a[61],b[61],c[61],d[61],l[61];

ll dis(ll k,ll u,ll v)else

if(usize&&vsize)elseelse

}}ll dfs(ll k,ll u)else

}int main()

for(int i=1;i<=m;i++)

return

0;}

未知 遊戲 題解

你又輸給我了!路由器將紙牌一攤,將白條貼在了勇者的臉上。我不服,你一定是出老千了!那,換乙個遊戲怎麼樣?行啊,沒問題!那就來個大點的籌碼吧,怎樣?時間限制 2s 空間限制 256m alice和bob在玩乙個遊戲,遊戲是在乙個n n的矩陣上進行的,每個格仔上都有 乙個正整數。當輪到alice bob...

未知 數列1 題解

題目描述 從前有乙個數列 x0 1 xn ax n 1 b 小x想知道當n變得無窮大的時候,abs xn 是否會變成無窮大。輸入 有若干行,每行表示乙個測試資料。每行有兩個整數a,b,其中a a 1e9,b b 1e9。輸出 與輸入行數一致,每行包含小寫的yes或no,其中yes表示xn無窮大,反之...

未知 六邊形 題解

接上題,反正是一起做的那麼故事情節也接上吧嘻嘻嘻 正好,帶我去一趟天線崖。你確定?你都說了都要暴雨了,前幾天的暴雨 是啊,你還抱怨整天悶在家裡啥事也沒幹呢,結果就剩下我在刷題而你整天再睡覺。因為山脈的阻隔,所以他們只能乘坐小船到達那裡。而給他們租小船的人,開出了很高的價錢,但是。你們幫我解決乙個問題...