poj 3275 傳遞閉包

2021-06-22 05:42:45 字數 580 閱讀 3954

思路:對於n個節點,共有n*(n-1)/2對關係,對於給出的m對已經確定的關係,我們可以用傳遞閉包推出目前已經確定的關係對數ans,於是答案就是n*(n-1)/2-ans.

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7#define maxn 1010

89 vectorint> >g_from;

10 vectorint> >g_to;

11bool

map[maxn][maxn];

1213

intmain()

1426 ans=0;27

for(int k=1;k<=n;k++)36}

37}38}

39for(int i=1;i<=n;i++)43}

44 printf("

%d\n

",n*(n-1)/2-ans);45}

46return0;

47 }

view code

poj 3275 鄰接表優化Floyd

傳統floyd是列舉列舉乙個點k在分別列舉k左右兩邊的點i和點j,但是這道題n 1000,n 3的複雜度接受不了,怎麼辦呢?我們看到此題邊很少,所以我們可以存下來每個點的出邊和入邊,然後列舉k是只需要列舉出邊和入邊即可 如下 include include include include inclu...

POJ 3275 兩種做法

題意 思路 1.floyd傳遞閉包 n 3 32 勉強卡過去吧 2.用鄰接表搞floyd 也是勉強卡過去 最後用n n 1 矩陣中為1的個數就ok了 傳遞閉包 by siriusrem include include include using namespace std bitset 1005 m...

POJ 3275 兩種做法

題意 思路 1.floyd傳遞閉包 n 3 32 勉強卡過去吧 2.用鄰接表搞floyd 也是勉強卡過去 最後用n n 1 矩陣中為1的個數就ok了 傳遞閉包 by siriusrem include include include using namespace std bitset 1005 m...