学习笔记--图论DFS,联通分量,时间戳
2013-08-09 00:24
411 查看
#include<iostream> #include<vector> using namespace std; const int maxn=12; int vis[maxn]; vector<int> G[maxn]; int dfs_clock; int pre[maxn]; int post[maxn]; int cc[maxn]; int current_cc=0; void dfs(int u) { //pre vis[u]=1; pre[u]=++dfs_clock; cc[u]=current_cc; for(int i=0;i<G[u].size();i++) { int v=G[u][i]; if(!vis[v]) dfs(v); } post[u]=++dfs_clock; //post } void init() { for(int i=0;i<12;i++) vis[i]=0; G[0].push_back(1); G[0].push_back(4); G[1].push_back(0); G[2].push_back(3); G[2].push_back(6); G[2].push_back(7); G[3].push_back(2); G[3].push_back(7); G[4].push_back(0); G[4].push_back(8); G[4].push_back(9); G[6].push_back(2); G[6].push_back(7); G[6].push_back(10); G[7].push_back(2); G[7].push_back(3); G[7].push_back(6); G[7].push_back(10); G[7].push_back(11); G[8].push_back(4); G[8].push_back(9); G[9].push_back(4); G[9].push_back(8); G[10].push_back(6); G[10].push_back(7); G[11].push_back(7); dfs_clock=0; } int main() { init(); for(int i=0;i<12;i++) { if(vis[i]==0) { current_cc++; dfs(i); } } // dfs(0); for(int i=0;i<12;i++) cout<<i+1<<" "<<pre[i]<<" "<<post[i]<<" "<<cc[i]<<endl; }
相关文章推荐
- Oracle Database 11g SQL 开发指南学习笔记:日期、时间的存储和处理
- 【小白笔记】PHP学习之路 (27) --日期、时间戳的获取
- php学习笔记3--php中获取时间与实际时间不符
- Shell学习笔记_时间计算[转]
- 时间序列学习笔记(1)
- [离散时间信号处理学习笔记] 6. 离散时间傅里叶变换
- iOS 学习笔记18 时间比较
- [金融学习笔记]金融的时间价值
- 【学习笔记】〖MFC〗MFC中月历控件CMonthCalCtrl获取时间的方法
- 【Cocos2d-X开发学习笔记】第11期:时间调度schedule函数的使用
- 【js学习笔记-010】--日期和时间
- 【学习笔记】图像RGB三个分量的理解与显示
- 学习笔记 十七 : 时间 ntp 和chrony
- 学习笔记-DTFT、DFS和DFT的联系
- Python学习笔记一 基本语法、变量类型、时间处理
- 基于时间的acl学习笔记
- 【C#学习笔记】获得系统时间
- c#学习笔记之时间类
- 数据结构和算法学习笔记——图论
- 黑马程序员学习笔记——关于时间复杂度计算1