題意:
思路:
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...