zgy 每天早上要從宿舍走路到機房,順便從學校小賣部購買早飯,當然機智的 zgy 一定會走最短路
學校的路可以看成一無向聯通張圖,圖上有 n 個點,m 條邊,每乙個點都有乙個唯一的編號 1~n
每一條邊有乙個邊權,表示兩個點之間的距離,zgy 的宿舍在 s 點,機房在 t點,而小賣部在 h 點
現在 zgy 想知道從宿舍經過小賣部到達機房的最短距離
不過因為在這個世界上有 q個 zgy,所以你必須回答 q 個問題
很棒的資料分治題
讀入裡面說了會讀入測試點編號……
其實是很明顯的暗示了……
一半的資料保證是連通圖,1 ≤ n ≤ 200,1 ≤ q ≤ \(10^5\)
這麼小的n,直接floyd跑一遍就好了,相當於floyd的板子題
另一半的資料保證圖連通,無環,1 ≤ n ≤ \(10^5\),1 ≤ q ≤ \(10^5\)
聯通圖無環……那不就是一棵樹嗎!
dfs預處理出到根節點的距離和lca,每次詢問輸出就好
**:
#include#define ll long long
#define inf 1000000000000000000
using namespace std;
int t,n,m,u,v,w;
int q,s,h,t;
struct edge
edge[1000005];
int cnt=0,head[100005];
inline void add_edge(int from,int to,int dis)
templateinline void read(t &res)
ll dis[205][205];
void floyd()
ll dep[100005];
ll ldep[100005];
int anc[400005][25];
void dfs(int u,int fa) }}
int lca(int x,int y)
} return anc[x][0];
}ll dis(int u,int v)
int main()
floyd();
read(q);
while(q--)
}else if(6<=t&&t<=10)
for(register int i=1;i<=n;++i) dep[i]=ldep[i]=inf;
dep[1]=0;
ldep[1]=1;
dfs(1,0);
read(q);
while(q--)
}return 0;
}
20191004機房測試 C 錦標賽
有乙個比賽已經有 n 個人參加,並且互相之間已經進行了比賽 每乙個人都有乙個得分用於最後排名 你作為第 n 1 個參賽者,需要與之前的每乙個人打一場比賽,初始得分為 0 對於每場比賽,有兩個人參加,不會存在平局,勝者得分增加 1,敗者得分不變 最後按照得分從高到低來排名,假設有人與你最終得分相同 那...
模擬測試20191004
如果直接暴力建圖跑bfs時空複雜度都是 o n 的,考慮怎麼優化bfs的過程 我們發現主要瓶頸在於有許多點被掃到了多次 考慮用乙個set存剩下的點,由於每個點能走到的點在相同奇偶性下是連續的,我們把奇數和偶數分開來存 每次用乙個點擴充套件時找到他能走的區間,把這些點從set裡刪掉就好了 注意區間範圍...
機房 測試計畫
2 計畫 2.4測試2 識別符號 3 測試設計說明 3.2測試2 識別符號 4 評價準則 感謝閱讀 1.1編寫目的 測試計畫是描述將要進行測試活動的範圍 方法 資源和時間進度的文件。它確定了測試項,要測試的特徵 測試任務,誰來完成每一項任務及需要制定應急方案的所有風險等。目的就是盡可能多的找到系統中...