luogu P2783 有機化學之神偶爾會做作弊

2022-05-09 13:18:09 字數 2274 閱讀 2457

嘟嘟嘟

一道很水的黑題~~

邊雙縮點後用lca求樹上兩點間路徑即可。

但是比較坑的是這道題是忽略重邊的,結果我還特意考慮了重邊,然後wa了幾發。

還有兩個點tle了,原因是建新圖的時候出現了重邊。這個重邊不是演算法的問題,因為邊雙縮點後不可能有重邊,而是寫法上的問題:在建無向邊的時候,習慣addedge(x, y), addedge(y, x),然而邊雙建邊的時候兩個點之間實際上連了4條邊。所以寫的時候只用建單向邊,形成的圖卻是無向圖。

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10 #include11

using

namespace

std;

12#define enter puts("")

13#define space putchar(' ')

14#define mem(a, x) memset(a, x, sizeof(a))

15#define rg register

16 typedef long

long

ll;17 typedef double

db;18

const db eps = 1e-8;19

const

int inf = 0x3f3f3f3f;20

const

int maxn = 1e4 + 5;21

const

int maxe = 5e4 + 5;22

inline ll read()

2331 inline void

write(ll x)

3237

38int

n, m;

3940

struct

edge

41e[maxe << 1], e2[maxe << 1

];44

int head[maxn], ecnt = -1;45

void addedge(int x, int

y)46

;48 head[x] =ecnt;49}

5051

int dfn[maxn], low[maxn], cnt = 0;52

bool

in[maxn];

53int st[maxn], top = 0;54

int col[maxn], ccol = 0;55

void tarjan(int now, int

f)56

66else

if(e[i].to != f) low[now] =min(low[now], dfn[e[i].to]);67}

68if(dfn[now] ==low[now])

69while(x !=now);77}

78}7980

int head2[maxn], ecnt2 = -1;81

void addedge2(int x, int

y)82

;84 head2[x] =ecnt2;85}

86void newgraph(int

now)

8795}96

97const

int n = 20;98

int fa[maxn][25

], dep[maxn];

99void dfs(int now, int

f)100

110}

111int lca(int x, int

y)112

121122

void print(int

x)123

128void solve(int x, int

y)129

134135

intmain()

136144

for(int i = 1; i <= n; ++i) if(!dfn[i]) tarjan(i, 0

);145 mem(head2, -1

);146

for(int i = 1; i <= n; ++i) newgraph(i);

147 dfs(col[1], 0

);148

int q =read();

149for(int i = 1; i <= q; ++i)

150154

return0;

155 }

view code

有機化學筆記

電子層和電子亞層的概念 如1s 2p 軌道,前面的數字代表電子層數。s亞層是角量子數l為1的軌道,能容納一對自旋相反的電子 p亞層是角量子數為2的軌道,能容納三對自旋相反的電子 d亞層是角量子數為3的軌道,能容納五對自旋相反的電子 共價鍵 性質 鍵長,越短,鍵越穩定。共價鍵的極性是因為成鍵的兩個原子...

洛谷2783 有機化學之神偶爾會做作弊

題目戳這裡 一句話題意 乙個無向圖,先縮掉所有的環,再詢問兩點直接隔了多少個點 兩端也算 solution 似乎難度稱不上黑題,思路也很明顯 直接tarjan縮點後求lca,深度之差就是相隔的點數。但注意特判lca x或y的情況。本來早就可以a了,結果居然lca打錯,無語.可能難就難在 比較長,有點...

洛谷P2783 有機化學之神偶爾會做作弊

雖然感覺難度其實並不到黑題的難度 其實這道題並沒用什麼特別的知識,只是tarjan求雙聯通分量和lca的結合。所以,我們可以很顯然的發現 如此惡劣的詞彙,逃 這道題其實就是給你乙個無向圖,其中乙個點雙聯通分量算作乙個點,詢問兩個點之間 包括這兩個點 有多少點 注意重邊不需要縮點 注意這裡的圖是無向圖...