O(n^3) 草过
查看原帖
O(n^3) 草过
547908
NightTide楼主2022/10/2 21:38

O(n3)O(n^3) floyd 算法加剪枝不吸氧跑得飞快,是不是数据太弱了。

#include<bits/stdc++.h>
#define MAXN 1010
using namespace std;
int n, m, ans;
bool vis[MAXN][MAXN];
int main(){
    scanf("%d%d",&n,&m);
    for(int i = 1; i <= m; i++){
        int u, v; scanf("%d%d",&u,&v);
        vis[u][v] = true;
    }
    for(int i = 1; i <= n; i++) vis[i][i] = true;
    for(int k = 1; k <= n; k++){
        for(int i = 1; i <= n; i++){
            if(!vis[i][k]) continue;
            for(int j = 1; j <= n; j++){
                if(vis[i][j] || !vis[k][j]) continue;
                vis[i][j] = true;
            }
        }
    }
    for(int i = 1; i <= n; i++) vis[i][i] = false;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            if(vis[i][j]) ans++;
        }
    }
    ans = n * (n - 1) / 2 - ans;
    printf("%d\n",ans);
    return 0;
}
2022/10/2 21:38
加载中...