1 条题解

  • 0
    @ 2026-10-25 18:48:32

    思路

    正反图可达节点分别为较轻和较重数,超过n/2者不可能居中,不能只计直接比较。

    参考程序(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    int countReach(int start,const vector<vector<int>>&g){vector<int>seen(g.size());vector<int>s={start};seen[start]=1;int ans=0;while(!s.empty()){int v=s.back();s.pop_back();for(int u:g[v])if(!seen[u]){seen[u]=1;ans++;s.push_back(u);}}return ans;}int main(){int n,m;cin>>n>>m;vector<vector<int>>g(n),r(n);while(m--){int x,y;cin>>x>>y;g[--x].push_back(--y);r[y].push_back(x);}int ans=0;for(int i=0;i<n;i++)if(countReach(i,g)>n/2||countReach(i,r)>n/2)ans++;cout<<ans<<'\n';}
    
    • 1

    信息

    ID
    1408
    时间
    1000ms
    内存
    64MiB
    难度
    普及
    标签
    递交数
    1
    已通过
    1
    上传者