poj2186 强连通+缩点 如果让我说:我只能说,实力决定一切
来源:互联网 发布:装饰美工职业资格证书 编辑:程序博客网 时间:2024/04/30 09:18
思路:蛋疼的一道题目,自己又想多了,记录所有点的出度(缩点),如果该缩点的出度为0,那么其解就是该缩点里所有点的总数,否则无解
#include<iostream>#include<algorithm>#include<cstdio>#include<string.h>#include<vector>#include<stack>#define maxn 11111using namespace std;int V,E,sum,tem;int dfn[maxn],low[maxn],vis[maxn],outd[maxn],belong[maxn],ind[maxn];int ans[maxn];vector<int>gra[maxn];stack<int>S;int MIN(int a,int b){ return a>b?b:a;}void tarjan(int pox){ vis[pox]=2; dfn[pox]=low[pox]=++sum; S.push(pox); for(int i=0; i<gra[pox].size(); i++) { int t=gra[pox][i]; if(!dfn[t]) { tarjan(t); low[pox]=MIN(low[pox],low[t]); } else if(vis[t]==2) { low[pox]=MIN(low[pox],dfn[t]); } } if(dfn[pox]==low[pox]) { ++tem; while(!S.empty()) { int gh=S.top(); S.pop(); outd[gh]=0; belong[gh]=tem; vis[gh]=1; ans[tem]++;//记录缩点的变量。 if(gh==pox) break; } }}int main(){ int a,b; while(scanf("%d%d",&V,&E)!=EOF) { tem=sum=0; memset(ans,0,sizeof(ans)); memset(dfn,0,sizeof(dfn)); memset(low,0,sizeof(low)); memset(vis,0,sizeof(vis)); memset(belong,0,sizeof(belong)); memset(ind,0,sizeof(ind)); for(int i=0; i<maxn; i++) gra[i].clear(); while(!S.empty()) S.pop(); for(int i=0; i<E; i++) { scanf("%d%d",&a,&b); gra[a].push_back(b); } for(int i=1; i<=V; i++) if(!dfn[i]) tarjan(i); for(int i=1; i<=V; i++) for(int j=0; j<gra[i].size(); j++) { if(belong[i]!=belong[gra[i][j]]) { outd[belong[i]]++;//记录缩点的出度 } } int flag=0; int as=0; int As=0; for(int i=1; i<=tem; i++) { if(outd[i]==0) { As++; flag=i; } } // printf("As=%d\n",As); if(As==1) { // printf("zhu hao\n"); printf("%d\n",ans[flag]); } else { printf("0\n"); } } return 0;}
- poj2186 强连通+缩点 如果让我说:我只能说,实力决定一切
- hdu2767强连通+缩点 如果让我说:我只能说,实力决定一切
- poj2553强连通+缩点 如果让我说:我只能说,实力决定一切
- hdu1269强连通水题 如果让我说:我只能说,实力决定一切
- hdu 2642 二维数组+判重 如果让我说:我只能说,实力决定一切
- hdu1301 MST+优先队列 如果让我说:我只能说,实力决定一切。
- hdu2544 spfa 第一弹 如果让我说:我只能说,实力决定一切
- hdu 1233 kruskal+优先队列 如果让我说:我只能说,实力决定一切。
- hdu1535 spfa() 如果让我说:我只能说,实力决定一切
- hdu2112 spfa() 如果让我说:我只能说,实力决定一切
- hdu 3191 次短路+优先队列 如果让我说:我只能说,实力决定一切
- poj3463 hdu1688 次短路+优先队列 如果让我说:我只能说,实力决定一切
- hdu3339 spfa()+dp 如果让我说:我只能说,实力决定一切
- hdu 3336 KMP走起 如果让我说:我只能说,实力决定一切
- hdu3746 KMP之next[]威武 如果让我说:我只能说,实力决定一切。
- poj 2752 KMP+DFS() 如果让我说:我只能说,实力决定一切
- poj3974 hdu3068最长回文子串 如果让我说:我只能说,实力决定一切
- poj3321 树状数组+DFS() 如果让我说:我只能说,实力决定一切
- hdu 1082 Matrix Chain Multiplication
- 腾讯:根据A数组求B数组值(要求时间、空间复杂度)
- 嵌入式linux文件系统
- watch ((Thread *) 0x804e378)->status
- linux下的C语言开发(静态库)
- poj2186 强连通+缩点 如果让我说:我只能说,实力决定一切
- [python]subprocess调用外部命令屏蔽输出
- Android开发之XML解析——SAX解析XML
- 使用pthread实现统计直方图
- SVN服务器搭建和使用
- Push Box
- 黑马程序员——JAVA学习日志10
- 自定义std::sort的比较函数时发生"invalid operator<"错误原因
- android 编译过程及错误处理