35分求助,萌新港学oi

P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G

您是不是markdown写错了这个好难看。。。
by sky_fackr @ 2018-11-20 23:25:22


@[王毅翀](/space/show?uid=72665) 格式 ```cpp #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; int n,m;const int maxn=10005; vector<int> ve[maxn]; vector<int> ve2[maxn]; int sta[maxn],id[maxn];int din=0; int dfn[maxn],low[maxn];int hig=0; void dfs(int x,int fa){ int sz=ve[x].size(); dfn[x]=low[x]=++hig; sta[++din]=x; rep(i,0,sz-1){ int y=ve[x][i]; if(dfn[y]){ low[x]=min(low[x],dfn[y]); }else{ dfs(y,x); low[x]=min(low[x],low[y]); } } if(low[x]+0==dfn[x]){ while(hig&&sta[hig]!=x){ id[sta[hig--]]=x; } id[x]=x; if(hig)hig--; } } int main(){ scanf("%d%d",&n,&m); rep(i,1,m){ int x,y;scanf("%d%d",&x,&y); ve[x].push_back(y); } rep(i,1,n){ if(!dfn[i])dfs(i,-1); } rep(i,1,n)cout<<dfn[i]<<" ";;cout<<endl; rep(i,1,n)cout<<low[i]<<" ";;cout<<endl; rep(i,1,n)cout<<id[i]<<" ";;cout<<endl; rep(i,1,n){ int sz=ve[i].size(); rep(j,0,sz-1)ve2[id[i]].push_back(id[ve[i][j]]); } int pos=0; rep(i,1,n)if(i==id[i]){ cout<<i<<"$"<<ve2[i].size()<<"\n"; if(ve2[i].size()==0){ pos=pos==0?i:-1; } } if(pos==-1){ printf("0\n"); }else{ int cnt=0; rep(i,1,n)if(pos==id[i])cnt++; printf("%d\n",cnt); } return 0; } ```
by resftlmuttmotw @ 2018-11-20 23:37:58


|