在這一切發生之前,學園都市表面看起來其實是非常平靜的。但僅僅只是表面而已。例如第五市場下面的地下街又傳來了嗶哩嗶哩的聲音,很顯然,這是電擊使在使用能力,而她的面前站著乙個抬起右臂的少年。為什麼放電妹要去攻擊刺蝟頭?通過御阪美琴,我們可以知道,刺蝟頭——上條當麻在大霸星祭的時候輸掉了和御阪美琴的賭約。
作為懲罰遊戲,上條當麻這一天要無條件接受美琴的所有條件。而上條當麻趁御阪美琴在辦理他們兩人的雙人通話**的一小會兒時間,又「勾搭」上了御阪妹。
在御阪妹和最後之作離開過後,御阪美琴拉著上條當麻去了地下街的遊戲廳。現在的美琴小姐十分氣氛,因為總有人來打擾她和上條當麻的私會。上條當麻現在也發現了這個問題,正在(被迫)想如何讓美琴開心。這時,一台嶄新的街機出現在他們面前,而最終大獎是乙個3公尺長的呱太玩偶。此時的美琴,早已準備躍躍欲試,可當麻卻突然擋在了他的面前,「這次就讓我來吧!(被迫)」
這台遊戲機裡面的遊戲是乙個十分無聊的遊戲:首先,螢幕上面會出現一張多個點多條無向邊的圖,兩點之間最多隻會有一條邊,且這張地圖是不會有自環的。每條邊的權值也標在了圖上。每一關,螢幕上會給出兩點,讓你在三秒之內答出這兩點之間的最短距離。遊戲保證兩點之間一定有邊。
作為無能力者(bug 者),當麻的計算能力肯定沒有美琴強,但他也不像在美琴面前出醜。所以他悄悄地找到了來自於bskingschool 的你,讓你幫他計算一下遊戲的答案。
第一行為兩個整數 n,m。表示地圖的點數和邊數。
第二行到第m+1 行,每行三個整數 x,y ,z ,表示 x,y 兩點之間存在一條直接路徑,長度為z 。
第m+2 行為乙個整數 q,表示機器給出了q 個提問。
第m+3 行到第m+3+q 行,每行二個整數 a,b 。表示機器所給出的兩點。
共q行,每行乙個數表示答案。
3 31 2 3
2 3 1
3 1 5
31 2
1 32 334
1樣例解釋
從1號節點直接走到至2號節點,距離為3。
從1號節點經2號節點走到至3號節點,距離為4。
從2號節點直接走到至3號節點,距離為1。
資料範圍及約定
題解:由於m只比n大一點,我們可以先找個樹出來,然後兩點之間最短路要麼經過樹上,要麼經過非樹邊
所以我們對非樹邊每個點跑個spfa,然後詢問時每個依次暴力比較,因為只有21,所以不會t
code:
1 #include2 #include3 #include4 #include5 #include6over#define n 300006
7using
namespace
std;
8struct
nodee[n],e1[n],a[n],temp[n];
11long
long
cnt1,first1[n],nxt1[n];
12void add1(long
long u,long
long v,long
long
w)19
long
long
first[n],nxt[n],cnt;
20void add(long
long u,long
long v,long
long
w)27
long
long
fa[n];
28long
long find(long
long
x)32
void merge(long
long x,long
long
y)37}38
long
long dep[n],f[n][32
];39
long
long lca(long
long x,long
long
y)46
for(long
long i=30;i>=0;i--)
50return f[x][0
];51}52
long
long
check[n],n,m,cnt_;
53void
kruskal()65}
66}67long
long vis[n],dis[50
][n];
68void spfa(long
long s,long
long
now)86}
87}88}
89}90bool cmp(const node &a,const node &b)
93long
long
distree[n];
94void dfs(long
long
x)103
}104
long
long
tot,tot_point,dian[n];
105long
long
read()
112while
(isdigit(c))
116return x*f;
117}
118int
main()
128 sort(a+1,a+m+1
,cmp);
129kruskal();
130for(long
long i=1;i<=m;i++)
141//
cout<142 f[1][0]=1
;143 dfs(1
);144
//for(int i=1;i<=tot_point;i++)
148//
}149
//for(int i=1;i<=n;i++)
152for(long
long i=1;i<=30;i++)
156}
157//
cout
//for(int i=1;i<=n;i++)
161long
long
q;162 q=read();//
dp,數論,圖論,資料結構高階演算法
163while(q--)
171 cout
;172
}173
return0;
174}
175/*
1765 6
1771 2 1
1782 3 2
1793 4 3
1804 5 4
1815 1 5
1821 3 1
1835
1841 5
1852 4
1863 4
1872 1
1883 5
189*/
牛客 11 01 生成樹
你有一張n個點的完全圖 即任意兩點之間都有無向邊 現在給出這張圖的兩棵生成樹 定義一次操作為 在任意一棵生成樹中刪除一條邊後再加入一條邊 必須在同一棵樹中操作 同時需要保證操作完後仍然是一棵樹 問使得兩棵樹相同的最少操作次數,若不存在合法的操作方案,輸出 1 注意 這裡的相同指的是點集與邊集均相同,...
uva 10766 生成樹計數
給出n,m,k,代表一家公司有n個部門,編號1到n,有m組關係,表示i和j不能直接聯通,k代表主管部門,問你有多少種分層方案。這道題的k沒有什麼用。include include include include include include include include include incl...
s4 7 生成樹協議
spanning tree 為了可靠,採用冗餘結構 但是透明網橋 會產生無休止迴圈的問題 冗餘交換拓撲可能帶來的問題 廣播風暴 多幀傳送 mac位址庫不穩定 生成樹協議 stp spanning tree protocol 為了維護乙個無環路的網路拓撲 新標準 rstp radia perlman ...