POJ 3275 兩種做法

2021-07-23 14:33:15 字數 954 閱讀 6102

題意:

思路:

1.floyd傳遞閉包 n^3/32 勉強卡過去吧……

2.用鄰接表搞floyd 也是勉強卡過去……

最後用n*(n-1)-矩陣中為1的個數就ok了

傳遞閉包:

//by siriusrem

#include

#include

#include

using

namespace

std;

bitset

<1005>

map[1005];

int n,m,xx,yy,ans;

int main()

for(int j=1;j<=n;j++)

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

}printf("%d\n",n*(n-1)/2-ans);

}

鄰接表:

//by siriusrem

#include

#include

#include

using namespace std;

#define n 1000005

int n,m,xx,yy,v[n],first[n],next[n],tot,map[1005][1005];

int first2[n],next2[n],v2[n],tot2;

void add(int x,int y)

void add2(int x,int y)

int main()

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

}printf("%d\n",n*(n-1)/2-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...

poj 3275 傳遞閉包

思路 對於n個節點,共有n n 1 2對關係,對於給出的m對已經確定的關係,我們可以用傳遞閉包推出目前已經確定的關係對數ans,於是答案就是n n 1 2 ans.1 include2 include3 include4 include5 include6 using namespace std 7...

poj 3275 鄰接表優化Floyd

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