#include<iostream>
#include<cstdio>
#include<cstring>
#include<limits>
#include<vector>
using namespace std;
const int maxn = ;
struct edge{
int to, cost;
edge(int t){
this->to = t; this->cost = ;
}
};
void addEdge(vector<edge> &edgelist, vector<vector<int> > &G, int from, int to){
edgelist.push_back(edge(to));
G[from].push_back(edgelist.size()-);
}
void addDoubleEdge(vector<edge> &edgelist, vector<vector<int> > &G, int from, int to){
addEdge(edgelist,G,from,to);
addEdge(edgelist,G,to,from);
}
bool isCyclic(vector<edge> edgelist, vector<vector<int> > G,vector<bool> vis, vector<bool> RecStack, int v){
for(int i=;i<G[v].size();++i){
edge e = edgelist[G[v][i]];
if(RecStack[e.to]) return true;
if(!vis[e.to]){
vis[e.to] = true; RecStack[e.to] = true;
if(isCyclic(edgelist,G,vis,RecStack,e.to)) return true;
RecStack[e.to] = false;
}
}
return false;
}
void buildMap(vector<edge> &edgelist, vector<vector<int> > &G){
addEdge(edgelist,G,,);
addEdge(edgelist,G,,);
addEdge(edgelist,G,,);
addEdge(edgelist,G,,);
addEdge(edgelist,G,,);
addEdge(edgelist,G,,);
}
int main(){
vector<edge> edgelist;
vector<vector<int> > G(maxn);
vector<bool> vis(maxn);
vector<bool> RecStack(maxn); buildMap(edgelist,G); for(int i=;i<vis.size();++i) vis[i]=false;
for(int i=;i<RecStack.size();++i) RecStack[i]=false; for(int i=;i<G.size();++i){
if(!vis[i]){
vis[i] = true; RecStack[i] = true;
if(isCyclic(edgelist,G,vis,RecStack,i)){
cout<<i<<" starts a cycle"<<endl;
}
RecStack[i] = false;
}
} return ;
}

最新文章

  1. CentOS下配置nginx conf/koi-win为同一文件的各类错误
  2. Jquery实现静态切换tab
  3. YYYY-mm-dd HH:MM:SS
  4. ThinkPHP的RBAC
  5. IOS基础之 (设计模式)
  6. [置顶] TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)
  7. 漫谈C#之关键字
  8. UNIX基础知识之信号
  9. sed找到重复的行
  10. 转之农民伯伯 IHttpHandler中使用Session实现原理[ASP.NET | IHttpHandler |IRequiresSessionState]
  11. MVC+Jqgrid
  12. mybatis 的一点问题
  13. 有没有必要参加IT培训
  14. centos下 redmind2.6安装
  15. 谈谈surging引擎的tcp、http、ws协议和如何容器化部署
  16. tarjin求割点
  17. Two Sum【LeetCode】
  18. Linux中通过Socket文件描述符寻找连接状态介绍
  19. ElasticSearch6(二)-- Java API连接es
  20. linux --- 3 vim 网络 用户 权限 软连接 压缩 定时任务 yum源

热门文章

  1. VIM的高级使用
  2. linux telnet命令参数及用法详解--telnet连接远程终端命令
  3. VC中不同类型DLL及区别
  4. Spring mvc 模式小结
  5. mybatis和spring3.1整合
  6. CentOS7.1配置远程桌面
  7. 镜面电火花EDM加工技术资料,模具行业的人应该好好看看!
  8. Android:使用ViewPager实现左右滑动切换图片(图上有点点)
  9. 省市区 Mysql 数据库表
  10. Android 应用开发性能优化完全分析