随笔 - 531  文章 - 0  评论 - 3  阅读 - 10215 

 

https://www.luogu.com.cn/problem/P2746

 

第二问, 就是在 入度为0(或者出度为0)那排的点之间加边

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <bits/stdc++.h>
using namespace std ;
  const int N=1e4+2;
 vector<int> g[N];
 stack<int> st ;
 int n,m,dfn[N],pool,low[N];
 int sz[N],cl,id[N];
  
 void tar(int x){
     dfn[x]=low[x]=++pool; st.push(x);
     int i,y;
     for(i=0;i<g[x].size();i++){
         y=g[x][i];
         if(dfn[y]==0) tar(y),low[x]=min(low[x],low[y]);
         else if(id[y]==0) low[x]=min(low[x],dfn[y]);
     }
     if(low[x]==dfn[x]){
        ++cl;
        do{
            y= st.top(); st.pop(); id[y]=cl;
            sz[cl]++;
        }while(x!=y) ;
          
     }
 }
 int main(){
    int i,x,y,c;
    cin>>n>>m;  
    for(i=1;i<=m;i++){
        cin>>x>>y; g[x].push_back(y);
    }
    for(i=1;i<=n;i++) if(!dfn[i]) tar(i);
    c=0;
    for(i=1;i<=cl;i++) if(sz[i]>1) c++;
    cout<<c;
 }

 

posted on   towboat  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示