- 浏览: 390586 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
wsyzyrxp:
非常感谢 兄弟 帮了我大忙
[opengl]弹簧质点法模拟柔性布料以及椭球碰撞的opengl实现 -
mingdry0304:
[opengl]彩色立方体旋转 -
tyfengyu:
我刚刚更改的代码加上了标准差stdVal,故recoMat应该 ...
[python]用python实现的pca算法 -
tyfengyu:
python的pca代码有2处错误:1.finalData = ...
[python]用python实现的pca算法 -
暴风雪:
McFlurry 写道前排(凑字数)!擦你怎么摸来这里的
诈尸总结
大致题意:
给出一个无向图,求出这个图的补图G。求出在G中存在多少个点使得这些点不属于任何一个奇环中。
大致思路:
这道题从一开始就是个杯具!先是把题目想成边的双连通分量做,狂哇。后来用割点的模版照着网上的代码改造出一个点双连通分量的代码,依然哇!!原因是同一个点可能属于不同的点双连通分量!! 后来把搜索染色的过程加到Tarjan里面,还是哇!!检查出来原因是搜索u的时候,起点并没有标记其在那一块双连通分量!! 前前后后花了我八天才AC……大概得终身难忘这道题了>_< 发图供大牛BS
给出一组可以判边双连通分量死刑的数据
#include<iostream> #include<cstdio> #include <algorithm> #include<cstring> using namespace std; const int inf=1<<30; const int nMax=30015; const int mMax=5000000; class edge{ public: int u,v,nex; };edge e[mMax]; int k,k1,head[nMax];//head[i]是以点i为起点的链表头部 int dfn[nMax],low[nMax],sta[nMax],top,atype,belon[nMax],dep; //Tarjan需要的数据记录 //atype 强连通分量的个数 bool insta[nMax]; int n,m; int ans,vis[nMax],num[nMax]; void addedge(int a,int b){ e[k].u=a; e[k].v=b; e[k].nex=head[a]; head[a]=k;k++; } int change(int a){ if(a==1)return 2; if(a==2)return 1; return 0; } int clor[nMax],cnt; bool dfs(int loc,int val){ int i,v; clor[loc]=val; for(i=head[loc];i;i=e[i].nex){ v=e[i].v; if(atype!=belon[v])continue; if(clor[v]==0){ if(!dfs(v,change(val))){ return 0; } } else{ if(clor[v]!=change(clor[loc])){ return 0; } } } return 1; } void Tarjan(int u,int rt){ //我的Tarjan模版 int i,t; dfn[u]=low[u]=++dep; sta[++top]=u; insta[u]=1; for(i=head[u];i;i=e[i].nex){ int v=e[i].v; if(v==rt)continue; if(!dfn[v]){ Tarjan(v,u); low[u]=min(low[u],low[v]); if(dfn[u]<=low[v]){ ///要注意一个点可能同时属于不同的点双连通分量 atype++; //点双通分量个数 do{ t=sta[top--]; insta[t]=0; belon[t]=atype; //第j个点属于第atype个连通块 num[++cnt]=t; }while(v!=t); num[++cnt]=u; memset(clor,0,sizeof(clor)); if(cnt>=3&&!dfs(u,1)){ while(cnt>0) vis[num[cnt--]]=1; } else cnt=0; } } else{ if(insta[v])low[u]=min(low[u],dfn[v]); } } } void init(){ k=k1=1; dep=1; top=atype=0; memset(insta,0,sizeof(insta)); //是否在栈中 memset(head,0,sizeof(head)); //静态链表头指针 memset(low,0,sizeof(low)); //Tarjan的low数组 memset(dfn,0,sizeof(dfn)); //Tarjan的dfn数组 memset(belon,0,sizeof(belon)); //记录每个点属于哪一个双连通分量 } bool map[2000][2000]; int main(){ int i,j,a,b; while(scanf("%d%d",&n,&m)!=EOF&&(n||m)){ init(); ans=0; cnt=0; memset(map,0,sizeof(map)); while(m--){ scanf("%d%d",&a,&b); map[a][b]=map[b][a]=1; } for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ if(!map[i][j]&&i!=j){ addedge(i,j); } } } memset(vis,0,sizeof(vis)); for(i=1;i<=n;i++){ if(!dfn[i])Tarjan(i,-1); } for(i=1;i<=n;i++){ if(!vis[i])ans++; } printf("%d\n",ans); } return 0; }
发表评论
-
[kruskal]hdoj 4786
2014-10-29 20:38 705大致题意: 一个无向图中,每条边都是白边或 ... -
[prim]aizuoj:There is No Alternative
2014-10-20 01:02 889题目地址:http://judge.u-aizu.ac.j ... -
[最大流唯一性判断]hdoj 4888
2014-10-18 16:14 1366题意 给出一个矩阵n行每一行数字的和,m列每列数字的 ... -
[双连通分量+队列优化dijkstra]acdream 1415
2014-10-16 04:03 1146题意: 给出一个n个点,m条边无向图(2 ≤ ... -
[2-sat]hdoj 4751
2014-10-10 21:06 819大致题意 给出一个有向图,问这个图是否能分为两个完全图 ... -
[费用流]hdoj 5045
2014-09-28 00:11 874读题的时候漏掉了“题目是按照顺序出现的”,导致网络赛中这道题 ... -
[dfs+bfs]zoj 3811
2014-09-21 09:59 989题意: 在一个无向图中,能否按照一定的顺序访问图 ... -
[二分+最大流]zoj 3691:flower
2013-04-01 21:05 1683大致题意: 在一个三维空间中有n个点,每个点的坐标 ... -
[spfa]hdoj 4460:Friend Chains
2012-11-08 21:15 1700大致题意: 一个无向图n个点,m条边,求任意两个点之 ... -
[二分匹配]zoj 3156:Taxi
2012-10-25 19:28 1186大致题意: 有n个人和m辆车(n<=m)。给出所有 ... -
[Tarjan]uva 4846:Mines
2012-10-19 10:07 1323大致题意: 给出n个地雷,每颗地雷有一个爆炸范围,这 ... -
[2-sat][位运算]zoj 3656:Bit Magic
2012-10-15 09:17 2059大致题意: 给出下面一段代码 很明显这段代码是 ... -
[二分匹配]zoj 3646:Matrix Transformer
2012-10-10 21:15 1067大致题意: 给出一个n*n的矩阵,每个矩阵元素的U或者 ... -
[拆点+网络流]2012 acm/icpc成都网络赛 hdoj 4292:Food
2012-09-16 17:15 2344大致题意: 有F种食物和D种饮料,每种食物或饮料只能 ... -
[网络流]2012 acm/icpc成都网络赛hdoj 4288:Control
2012-09-16 17:03 1361大致题意: 给出一个又n个点,m条边组成的无向图。给出两 ... -
[floyd+Tarjan]zoj 3232:It's not Floyd Algorithm
2012-09-09 09:49 1151大致题意: 给出一个有向图的传递闭包矩阵,求出这个图 ... -
[最大流]zoj 3642:Just Another Information Sharing Problem
2012-08-28 13:26 1149大致题意: 有n个人,每个人知道ai个消息,并且会 ... -
[Tarjan变形]zoj 3630:Information
2012-08-15 16:42 1161大致题意: 给出一个有向图,现在要删去一个点使得剩下的图 ... -
[Tarjan强连通分量]hdoj 3836:Equivalent Sets
2012-07-21 09:40 971大致题意: 就是给出一个有向图,求最少加多少条边可以 ... -
[最大流]zoj 3305:Get Sauce
2012-06-19 10:04 979大致题意: 有n种原材料,每种一件。现在给出m个组合 ...
相关推荐
POJ2942-Knights of the Round Table 【Tarjan算法】 解题报告+AC代码 http://hi.csdn.net/!s/F3L8HO ================================== 我的POJ所有解题报告:...
- POJ 2186:强连通分量的识别与分析。 #### 最大流最小割 - **题目示例**: - POJ 3352:最大流问题的求解。 ### 数据结构 #### 栈 - **题目示例**: - POJ 2528、POJ 2828:栈的基本操作与应用场景。 #### ...
### POJ 分类题目知识点详解 #### 一、基本算法 **1. 枚举** - **定义**:枚举是一种通过尝试所有可能情况来解决问题的方法。 - **示例题目**: - poj1753 - poj2965 - **应用场景**:适用于问题规模较小或解决...
POJ(Problem Online Judge)是一个流行的在线编程练习平台,尤其适合初学者进行“百练”来巩固基础和提高解题能力。以下是一些从题目列表中抽取的知识点,涵盖多个编程领域: 1. **基础算法**: - **鸡兔同笼**...
- **描述**:强连通分量是指有向图中的节点集合,其中任意两个节点都是相互可达的。 - **应用场景**:图的分析与结构化。 - **相关题目**: - POJ 3041 - POJ 3020 ### 数据结构 #### 1. 栈与队列 - **描述**:...
### ACM新手训练方案知识点详解 #### 一、基础算法与数据结构 在ACM竞赛中,基础算法与数据结构是入门必备的知识点。本部分主要介绍了一些基础算法及其应用场景。 ##### 1. 基础算法 - **排序**:如快速排序、...
- poj2942: 涉及双连通分量的识别问题。 ##### 4. 强连通分支及其缩点 - **定义**: 强连通分支是指图中的极大强连通子图。 - **应用场景**: 在图的分析中有重要应用。 - **示例题目**: - poj2186: 涉及强连通分支...
- **例题**:poj1860, poj3259, poj1062, poj2253, poj1125, poj2240 - **解释**:最短路径算法包括Dijkstra算法、Bellman-Ford算法、Floyd算法以及堆优化的Dijkstra算法等。 ##### (3) 最小生成树算法 - **例题**...
根据给定的信息,我们可以将POJ题目按照不同的类别进行详细的知识点分析与总结。下面将对每一类别的主要内容、特点及示例题目进行详细介绍。 ### 一、算法基础 #### 1. 搜索 - **内容**: 包括深度优先搜索(DFS)...
- (poj2942):图的连通性和双连通组件的计算。 4. **强连通分量**: - (poj2186):如何找出一个有向图中的强连通分量。 5. **图的同构问题**: - (poj3352):判定两个图是否同构。 6. **小世界模型**: - ...
POJ3177-Redundant Paths 【Tarjan-边双连通分量-缩点】 解题报告+AC代码+测试数据 http://hi.csdn.net/!s/GPAY6Z 附:我所有的POJ解题报告链接 . http://blog.csdn.net/lyy289065406/article/details/6642573
### POJ题目分类详解 #### 动态规划 (DP) **动态规划**是一种解决最优化问题的方法论,它通过将复杂的问题分解成一系列简单的子问题,并利用子问题的解来构造原问题的解。在本分类中,我们将详细介绍POJ平台上涉及...
POJ2942 - Knights of the Round Table - **题目链接**:[POJ2942](http://acm.pku.edu.cn/JudgeOnline/problem?id=2942) - **解法概述**:这是一道关于双连通分量的问题,需要判断图是否双连通。 - **双连通分量...
- **示例题目**: POJ 3267, POJ 1836, POJ 1260, POJ 2533, POJ 3176, POJ 1080, POJ 1159 - **注意事项**: 理解每种模型的状态定义和转移方程。 #### 六、数学 **1. 组合数学** - **定义**: 研究组合结构的...
- **知识点**:双联通分量算法,用于识别图中的双连通部分。 #### 3189 Steady Cow Assignment - 网络流 - **知识点**:网络流算法。 #### 3204 Ikki's Story I - Road Reconstruction - 最大流 - **知识点**:...
- 示例题目:POJ 3349, POJ 3274, POJ 2151, POJ 1840, POJ 2002, POJ 2503 ##### 2. 图算法 - **最短路径**:包括迪杰斯特拉算法(Dijkstra)、贝尔曼-福特算法(Bellman-Ford)等,适用于求解两点之间的最短...
- 示例题目:poj1191, poj1054, poj3280, poj2029, poj2948, poj1925, poj3034 2. **四边形不等式** - 示例题目:POJ3254, poj2411, poj1185 3. **记忆化搜索** - 示例题目:poj2057, poj1947, poj2486, poj...
【ACM竞赛与北大POJ解题报告】 在编程竞赛领域,ACM(国际大学生程序设计竞赛,简称ACM/ICPC)是一项极具影响力的比赛,它挑战参赛者的算法设计、问题理解和快速编码能力。北京大学(Peking University)的在线判题...
### ACM算法经典书籍知识点梳理 #### 一、CLRS - **书名**: *Introduction to Algorithms*(简称CLRS) - **作者**: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein - **特点**: 作为...
### ACM POJ PKU 最全题目分类解析 #### 动态规划(DP) 在计算机科学领域,动态规划(Dynamic Programming, DP)是一种重要的算法思想,主要用于解决多阶段决策过程中的优化问题。它通过将原问题分解成相互重叠的...