洛谷P2863 [USACO06JAN]牛的舞会The Cow Prom
代码是粘的,庆幸我还能看懂。
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<stack> #include<vector> using namespace std; struct node { int num,par; }p[10005]; int n,m,index=1,x,y,cnt; vector<int>v[10005]; bool vis[10005]; int ind[10005]; stack<int>s; bool in_stack[10005]; void tarjan(int x) { p[x].num=index; p[x].par=p[x].num; index++; vis[x]=1; in_stack[x]=1; s.push(x); for(int i=0;i<v[x].size();i++) { if(!vis[v[x][i]]) { tarjan(v[x][i]); p[x].par=min(p[x].par,p[v[x][i]].par); } else if(in_stack[v[x][i]]) { p[x].par=min(p[x].par,p[v[x][i]].num); } } if(p[x].num==p[x].par) { ++cnt; int gutc=0; int k; do { k=s.top(); s.pop(); in_stack[k]=0; gutc++; }while(k!=x); if(gutc==1) cnt--; } } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { scanf("%d%d",&x,&y); v[x].push_back(y); } for(int i=1;i<=n;i++) if(!vis[i]) tarjan(i); printf("%d\n",cnt); return 0; }
我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。