洛谷P2245 星際導航

2021-08-18 07:28:58 字數 2155 閱讀 2516

sideman做好了回到gliese 星球的硬體準備,但是sideman的導航系統還沒有完全設計好。為了方便起見,我們可以認為宇宙是一張有n 個頂點和m 條邊的帶權無向圖,頂點表示各個星系,兩個星系之間有邊就表示兩個星系之間可以直航,而邊權則是航行的危險程度。

sideman 現在想把危險程度降到最小,具體地來說,就是對於若干個詢問(a, b),sideman 想知道從頂點a 航行到頂點b 所經過的最危險的邊的危險程度值最小可能是多少。作為sideman 的同學,你們要幫助sideman 返回家園,兼享受安全美妙的宇宙航行。所以這個任務就交給你了。

輸入格式:

第一行包含兩個正整數n 和m,表示點數和邊數。

之後 m 行,每行三個整數a,b 和l,表示頂點a 和b 之間有一條邊長為l 的邊。頂點從1 開始標號。

下面一行包含乙個正整數 q,表示詢問的數目。

之後 q 行,每行兩個整數a 和b,表示詢問a 和b 之間最危險的邊危險程度的可能最小值。

輸出格式:

對於每個詢問, 在單獨的一行內輸出結果。如果兩個頂點之間不可達, 輸出impossible。

輸入樣例#1:

4 5

1 2 5

1 3 2

2 3 11

2 4 6

3 4 4

32 3

1 41 2

輸出樣例#1:

5

45

對於40% 的資料,滿足n≤1000,m≤3000,q≤1000。

對於 80% 的資料,滿足n≤10000,m≤105,q≤1000。

對於 100% 的資料,滿足n≤105,m≤3×105,q≤105,l≤109。資料不保證沒有重邊和自環。

lct**好!

首先一發最小生成樹。

新增一條 u->v 的邊,權值為w,那麼就相當於:

link(u,id);link(v,id);//id是邊的序號

value[id]=w;

然後就是板子了。。。

附**:

#include#include#include#define maxn 300010

using namespace std;

int n,m,q;

int w[maxn<<1],fa[maxn];

int top,stack[maxn<<1];

struct node1a[maxn<<1];

struct node2b[maxn];

inline int read()

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

return date*w;

}bool cmp(const node2 &x,const node2 &y)

inline bool isroot(int rt)

inline void pushup(int rt)

inline void pushdown(int rt)

inline void turn(int rt)

a[rt].f=y;a[x].f=rt;a[a[rt].son[k]].f=x;

a[x].son[k^1]=a[rt].son[k];a[rt].son[k]=x;

pushup(x);pushup(rt);

}void splay(int rt)

turn(rt); }}

void access(int rt)

}inline void makeroot(int rt)

inline void split(int x,int y)

inline void link(int x,int y)

int find(int x)

void uniun(int x,int y)

void kruskal()

sort(b+1,b+m+1,cmp);

for(int i=1;i<=m;i++)

for(int i=1;i<=m&&sif(find(b[i].u)!=find(b[i].v))

}void work()

split(x,y);

printf("%d\n",w[a[y].v]); }}

void init()

kruskal();

}int main()

P2245 星際導航

sideman做好了回到gliese星球的硬體準備,但是sideman的導航系統還沒有完全設計好。為了方便起見,我們可以認為宇宙是一張有 n 個頂點和 m 條邊的帶權無向圖,頂點表示各個星系,兩個星系之間有邊就表示兩個星系之間可以直航,而邊權則是航行的危險程度。sideman現在想把危險程度降到最小...

P2245 星際導航

sideman 做好了回到gliese星球的硬體準備,但是sideman的導航系統還沒有完全設計好。為了方便起見,我們可以認為宇宙是一張有n 個頂點和m 條邊的帶權無向圖,頂點表示各個星系,兩個星系之間有邊就表示兩個星系之間可以直航,而邊權則是航行的危險程度。sideman 現在想把危險程度降到最小...

洛谷P2245 星際導航 kruskal重構樹

sideman 做好了回到 textgliese 星球的硬體準備,但是 textsideman 的導航系統還沒有完全設計好。為了方便起見,我們可以認為宇宙是一張有 nn 個頂點和 mm 條邊的帶權無向圖,頂點表示各個星系,兩個星系之間有邊就表示兩個星系之間可以直航,而邊權則是航行的危險程度。text...