不久之前,mirko建立了乙個旅行社,名叫「極地之夢」。這家旅行社在北極附近購買了n座冰島,並且提供觀光服務。
當地最受歡迎的當然是帝企鵝了,這些小傢伙經常成群結隊的遊走在各個冰島之間。mirko的旅行社遭受一次重大打擊,以至於觀光遊輪已經不划算了。旅行社將在冰島之間建造大橋,並用觀光巴士來運載遊客。
mirko希望開發乙個電腦程式來管理這些大橋的建造過程,以免有不可預料的錯誤發生。這些冰島從1到n標號。一開始時這些島嶼沒有大橋連線,並且所有島上的帝企鵝數量都是知道的。每座島上的企鵝數量雖然會有所改變,但是始終在[0, 1000]之間。你的程式需要處理以下三種命令:
bridge a b:詢問結點a與結點b是否連通。如果是則輸出「no」。否則輸出「yes」,並且在結點a和結點b之間連一條無向邊。
penguins a x:將結點a對應的權值wa修改為x。
excursion a b:如果結點a和結點b不連通,則輸出「impossible」。否則輸出結點a到結點b的路徑上的點對應的權值的和。
輸入格式:
第一行包含乙個整數n(1<=n<=30000),表示節點的數目。
第二行包含n個整數,第i個整數表示第i個節點初始時對應的權值。
第三行包含乙個整數q(1<=n<=300000),表示操作的數目。
以下q行,每行包含乙個操作,操作的類別見題目描述。
任意時刻每個節點對應的權值都是1到1000的整數。
輸出格式:
輸出所有bridge操作和excursion操作對應的輸出,每個一行。
輸入樣例#1:
5輸出樣例#1:4 2 4 5 6
10excursion 1 1
excursion 1 2
bridge 1 2
excursion 1 2
bridge 3 4
bridge 3 5
excursion 4 5
bridge 1 3
excursion 2 4
excursion 2 5
4資料範圍:1<=n<=30000, 1<=q<=300000, 0<=wi<=1000。impossible
yes6
yesyes
15yes
1516
題意:link,單點修改,路徑查詢
#include#define n 30005
#define lc t[x].ch[0]
#define rc t[x].ch[1]
using namespace std;
int n,q,a[n]; char s[20];
struct nodet[n];
int read()
while(isdigit(ch))cnt=cnt*10+(ch-'0'),ch=getchar();
return cnt*f;
}bool isroot(int x)
void pushup(int x)
void pushdown(int x)
}void pushpath(int x)
void rotate(int x)
void splay(int x)
}void access(int x)
void makeroot(int x)
int findroot(int x)
void link(int x,int y)
int main()
else printf("impossible\n");
} if(s[0]=='p')
if(s[0]=='b')
}}
bzoj2843 LCT 極地旅行社
description 不久之前,mirko建立了乙個旅行社,名叫 極地之夢 這家旅行社在北極附近購買了n座冰島,並且提供觀光服 務。當地最受歡迎的當然是帝企鵝了,這些小傢伙經常成群結隊的遊走在各個冰島之間。mirko的旅行社遭受一次 重大打擊,以至於觀光遊輪已經不划算了。旅行社將在冰島之間建造大橋...
BZOJ 2843 極地旅行社 LCT
lct.include include include include define rep i n for int i 0 i n i define clr x c memset x c sizeof x using namespace std const int maxn 30000 5 con...
BZOJ2843 極地旅行社
題意 連邊,詢問權值和,單點修改權值 裸的不能再裸的lct模板題。話說我就貼了個剛寫完的板,改了下輸入,輸出,資料範圍都沒看,居然就a了。一點坑點都沒有,要不要這樣啊。include include include define n 200005 using namespace std int n,...