思路:拓撲排序。
考慮只由有向邊組成的圖。
顯然若該圖有環顯然無解。
否則必然有解。
因為:該有向圖是乙個dag
dagda
g能構成乙個拓撲序,假設當前我們有一條無向邊從拓撲序尾連向拓撲序首,顯然我們可以改變該邊的方向:即讓拓撲序較小的點指向拓撲序較大的點,這樣就不會破壞原有的拓撲序,使得該圖仍為dag
dagda
g。
#include
using
namespace std;
typedef
long
long ll;
const
int n=
2e5+
5,m=
2e5+
5,inf=
0x3f3f3f3f
,mod=
1e9+7;
#define mst(a) memset(a,0,sizeof a)
#define lx x<<1
#define rx x<<1|1
#define reg register
#define pii pair
#define fi first
#define se second
#define pb push_back
int n,m,cnt,tmp[n]
,id[n]
;int
*in;
pii a[n<<1]
;vectorint>
>e;
void
topo()
}int
main()
topo()
;if(cntputs
("no");
else}}
return0;
}
E Directing Edges(拓撲排序)
題意 給你一張n個點m條邊的圖,其中有一些邊是有向邊,有一些邊是無向邊,題目要求你對所有無向邊選擇乙個方向,使得整個圖成為有向無環圖 dag 若無法做到則輸出 1。思路 如果給定的有向邊已經形成環了,那麼再怎麼改無向邊,都無法做到。如果有向邊沒有形成環,那麼就可以做到。我們把有向邊連線起來,無向邊不...
Legal or Not hdu3342拓撲排序
題意 判斷圖中是否有環存在 思路 簡單的拓撲排序 將有關係的點,加乙個有向邊,然後記錄出入度,先找入度為0的點,將和他聯絡的點入度 1,再找入度為0的直到沒有點為止,判斷點是否全訪問過,如果是說明不存在環,如果不是就說明有環存在 include include include include inc...
HDU3342Legal or Not 拓撲排序
有向圖判斷是否成環 如果是環輸出no 只要入度為0的點的個數 等於 總的點的個數則無環 includeusing namespace std input by bxd define rep i,a,b for int i a i b i define ri n scanf d n define ri...