桂林电子科技大学第三届ACM程序设计竞赛 F题

简介: 桂林电子科技大学第三届ACM程序设计竞赛 F题
链接:https://ac.nowcoder.com/acm/contest/558/F
来源:牛客网
小猫在研究有向图。小猫在研究联通性。
给定一张N个点,M条边的有向图,问有多少点对(u,v)(u<v),满足u能到达v且v也能到达u。
题意:给定一张N个点,M条边的有向图,问有多少点对(u,v)(u<v),满足u能到达v且v也能到达u。
思路:跑一遍floyd,判断dis[u][v] != inf && dis[v][u] != inf 说明u -> v && v->u
#include <bits/stdc++.h>
using namespace std;
int a[1005][1005];
const int inf = 1e9;
int n, m, u, v;
int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            a[i][j] = inf;
        }
    }
    int ans = 0;
    for (int i = 1; i <= m; i++) {
        cin >> u >> v;
        a[u][v] = 1;
    }
    for (int k = 1; k <= n; k++) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                a[i][j] = min(a[i][j], a[i][k] + a[k][j]);
            }
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (i != j && a[i][j] < inf && a[j][i] < inf) {
                ans++;
            }
        }
    }
    cout << ans / 2 << endl;
    return 0;
}
相关文章
集美大学第九届程序设计竞赛
集美大学第九届程序设计竞赛
80 0
桂林电子科技大学第三届ACM程序设计竞赛 C题
桂林电子科技大学第三届ACM程序设计竞赛 C题
148 0
桂林电子科技大学第三届ACM程序设计竞赛 E题
桂林电子科技大学第三届ACM程序设计竞赛 E题
80 0
桂林电子科技大学第三届ACM程序设计竞赛 B题
桂林电子科技大学第三届ACM程序设计竞赛 B题
88 0
桂林电子科技大学第三届ACM程序设计竞赛 H题
桂林电子科技大学第三届ACM程序设计竞赛 H题
88 0
桂林电子科技大学第三届ACM程序设计竞赛 I题
桂林电子科技大学第三届ACM程序设计竞赛 I题
91 0
桂林电子科技大学第三届ACM程序设计竞赛 D题
桂林电子科技大学第三届ACM程序设计竞赛 D题
113 0
桂林电子科技大学第三届ACM程序设计竞赛 J题
桂林电子科技大学第三届ACM程序设计竞赛 J题
97 0
|
弹性计算 数据安全/隐私保护
辽宁科技大学飞天加速计划
我所在劳动教育了解的飞天加速计划