BZOJ3651網路通訊

2021-07-10 18:30:52 字數 2754 閱讀 5528

3651: 網路通訊

time limit: 10 sec memory limit: 256 mb

submit: 77 solved: 54

description

有乙個由m 條電纜連線的 n 個站點組成的網路。為了防止壟斷,由 c 個公司控制所有的電纜,規定任何公司不能控制連線同乙個站點的兩條以上的電纜(可以控制兩條)。同時規定,每個公司不能有多餘的電纜,所謂的多餘,是指屬於同乙個公司的電纜不能形成環。

在運作過程中,不同公司之間會進行電纜買賣。請你寫乙個程式判斷買賣是否合法。

input

輸入第一行有4個由空格隔開的整數 n,m,c和 t。n(1≤n≤ 8 000)表示站點數,m(0≤m≤100 000)表示連線站點的電纜數。c(1≤c≤ 100)表表示公司數量,t 表示電纜買賣次

數。後面有m行,每行三個整數sj1,sj2和kj,表示連線站點sj1和sj2(1≤sj1< sj2 ≤ n)的電纜屬於kj(1≤kj≤c)公司擁有,任意兩個站點只有一條直接相連的電纜,輸入狀態合法。最後t(0≤t≤100 000)行,每行三個整數 si1, si2和 ki,表示 ki公司想購買站點si1和si2之間的電纜。

output

輸出共 t行,表示處理的結果,有以下幾種可能的結果:

1、「no such cable.」 兩個站點間沒有電纜。

2、 「already owned.」 電纜己經是 ki 公司控制。

3、 「forbidden: monopoly.」 ki 公司己經控制了兩條連線 si1 或 si2 的電纜。

4、 「forbidden: redundant.」 ki 公司控制的線路會出現環。

5、 「sold.」 可以買賣。

sample input

4 5 3 5

1 2 1

2 3 1

3 4 2

1 4 2

1 3 3

1 2 3

1 2 3

1 4 3

2 3 3

2 4 3

sample output

sold.

already owned.

forbidden: monopoly.

forbidden: redundant.

no such cable.

lct模板題。。

lct維護雙連通分量模板。。

雙倍經驗:bzoj3081

ca互測題。。

在考場上寫了個200+的鏈剖,然後mle。。

另一種ta爺神奇的做法是splay+啟發式合併。。

對於no such cable和already owned,map一下。。

如果為0——>no such cable

如果為顏色——>already owned

然後增設變數degree,記錄同種顏色邊的度數。。

如果==2——>forbidden: monopoly

然後維護下連通性。。

如果x與y連通——>forbidden: redundant

如果都不是——>sold

然後修改。。cut再link

附上本蒟蒻的**:

#include

#include

#include

#include

using namespace std;

#define maxn 8010

int n,m,colornum,t;

mapint,int>,int>q;

struct kx

bool isroot(int

x)

void rever(int

x)

void rotate(int

x)

void pushdown(int

x)

void splay(int

x)

}int root(int

x)

void access(int

x)

void link(int

x,int

y)

void cut(int

x,int

y)

bool ask(int

x,int

y)

}color[110];

intread()

while (ch>='0' && ch<='9')

w=w*10+ch-'0',ch=getchar();

return w*f;

}int main()

while (t--)

if (q[make_pair(min(x,y),max(x,y))]==w)

if (color[w].degree[x]==2 || color[w].degree[y]==2 || (x==y && color[w].degree[x]!=0))

if (color[w].ask(x,y)==1)

printf("sold.\n");

ints=q[make_pair(min(x,y),max(x,y))];

color[s].cut(x,y),color[w].link(x,y),q[make_pair(min(x,y),max(x,y))]=w;

}return

0;}

BZOJ3651 網路通訊

description 有乙個由m 條電纜連線的 n 個站點組成的網路。為了防止壟斷,由 c 個公司控制所有的電纜,規定任何公司不能控制連線同乙個站點的兩條以上的電纜 可以控制兩條 同時規定,每個公司不能有多餘的電纜,所謂的多餘,是指屬於同乙個公司的電纜不能形成環。在運作過程中,不同公司之間會進行電...

BZOJ3651 網路通訊(LCT)

我是超連結 1a辣!給每個公司建一棵樹,就是給每個陣列多一維id唄,輔助樹轉來轉去也是在id層面上轉 看了看發現這個題要迅速找到某條邊對應的管轄公司,給每條邊乙個id,簡單一點就是。x 1 8000 y 那看起來挺大的啊,map走起!include include include using nam...

bzoj3651 3081 網路通訊

time limit 10 sec memory limit 256 mb submit 50 solved 37 submit status discuss 有乙個由m 條電纜連線的 n 個站點組成的網路。為了防止壟斷,由 c 個公司控制所有的電纜,規定任何公司不能控制連線同乙個站點的兩條以上的電...