hdu5961
題意:中文題題解:
1、判斷傳遞的條件為:若g中有 一條邊從a到b且有一條邊從b到c ,則g中同樣有一條邊從a到c。
2、我們去列舉b,我們假設集合sb
= 表示有一條
x 指向
b的邊。我們假設集合tb
= ,表示有有一條
b 指向
x的邊。
3、我們再去列舉sb
中的元素,假設我們當前列舉的是
x ,因為
x是指向
b 的,所以我們根據題意容易得知該圖是傳遞圖的話一定滿足:tx
∩tb=
tb,然後就可以得出答案了,至於怎麼處理集合的並,我們可以用bitset搞搞就可以了!!!具體看**。
**:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define pi 2*asin(1.0)
#define ll long long
#define pb push_back
#define pa pair
#define clr(a,b) memset(a,b,sizeof(a))
#define lson lr<<1,l,mid
#define rson lr<<1|1,mid+1,r
#define bug(x) printf("%d++++++++++++++++++++%d\n",x,x)
#define key_value ch[ch[root][1]][0]
const
int mod = 1000000007;
const
int n = 2016+15;
const
int maxn = 200+ 14;
const
int mm=100010;
const
int letter = 130;
const
int inf = 1e9;
const
double pi=acos(-1.0);
const
double eps=1e-8;
using
namespace
std;
inline
int read()
while(ch>='0'&&ch<='9')
return x*f;
}int t,n;
char s[n][n];
bitset
vs[2][n],tt;
int main()}}
int flag=1;
for(int x=1;x<=n;x++)}}
if(!flag) break;
}if(!flag)
for(int i=1;i<=n;i++) vs[0][i].reset(),vs[1][i].reset();
for(int i=1;i<=n;i++)}}
flag=1;
for(int x=1;x<=n;x++)}}
if(!flag) break;
}if(flag) puts("t");
else
puts("n");
}return
0;}
HDU 5961 傳遞 bfs亂搞
我們稱乙個有向圖g是傳遞的,當且僅當對任意三個不同的頂點a,若g中有 一條邊從a到b且有一條邊從b到c 則g中同樣有一條邊從a到c。我們稱圖g是乙個競賽圖,當且僅當它是乙個有向圖且它的基圖是完全圖。換句 話說,將完全圖每條邊定向將得到乙個競賽圖。下圖展示的是乙個有4個頂點的競賽圖。現在,給你兩個有向...
hdu 5961 傳遞(暴力搜尋)
我們稱乙個有向圖g是傳遞的,當且僅當對任意三個不同的頂點a,若g中有 一條邊從a到b且有一條邊從b到c 則g中同樣有一條邊從a到c。我們稱圖g是乙個競賽圖,當且僅當它是乙個有向圖且它的基圖是完全圖。換句 話說,將完全圖每條邊定向將得到乙個競賽圖。下圖展示的是乙個有4個頂點的競賽圖。現在,給你兩個有向...
HDU 5961 傳遞 隨機化
我們稱乙個有向圖g是傳遞的,當且僅當對任意三個不同的頂點a,若g中有 一條邊從a到b且有一條邊從b到c 則g中同樣有一條邊從a到c。我們稱圖g是乙個競賽圖,當且僅當它是乙個有向圖且它的基圖是完全圖。換句 話說,將完全圖每條邊定向將得到乙個競賽圖。下圖展示的是乙個有4個頂點的競賽圖。現在,給你兩個有向...