HDU 4857 逃生 反向拓撲排序 優先佇列

2022-05-01 15:30:14 字數 564 閱讀 1310

hdu-4857

題意就是做乙個符合條件的排序,用到拓撲序列。

我一開始wa了多發,才發現有幾個樣例過不了,發現1->2->3...的順序無法保證。

後來就想用並查集強連,還是wa;

後來發現髮用反向拓撲排序+優先佇列才可以通過;

這裡注意把入度為0的入隊改成了出度為0的入隊

下面是ac**:

#include #include

#include

using

namespace

std;

vector

to[30000+10

];int

n,m,cnt;

int outdeed[30000+10],topo [30000+10

];void

init()

void

toposort()

}}void

output()

intmain()

toposort();

output();

}return0;

}

反向拓撲排序 HDU 4857 逃生

題意 n個結點,m個拓撲關係 a,b 表示a必須排在b前面,在滿足m個拓撲關係關係的前提下使得小的結點盡可能的排在前面。也就是說我們現在要從1號結點開始考慮,如果要排1號結點,根據拓撲關係,首先必須排哪些結點,如果排好了1號結點,則繼續考慮2號結點 3號結點。我們先看兩個例子 存在拓撲關係 5 3 ...

HDU 4857 逃生 拓撲排序

time limit 1000ms memory limit 32768kb 64bit io format i64d i64udescription 糟糕的事情發生啦,現在大家都忙著逃命。但是逃命的通道很窄,大家只能排成一行。現在有n個人,從1標號到n。同時有一些奇怪的約束條件,每個都形如 a必須...

HDU 4857 逃生 (拓撲排序)

糟糕的事情發生啦,現在大家都忙著逃命。但是逃命的通道很窄,大家只能排成一行。現在有n個人,從1標號到n。同時有一些奇怪的約束條件,每個都形如 a必須在b之前。同時,社會是不平等的,這些人有的窮有的富。1號最富,2號第二富,以此類推。有錢人就賄賂負責人,所以他們有一些好處。負責人現在可以安排大家排隊的...