摘要: Trajan算法求出图中所有的scc :考虑强连通分量c 设其中第一个被发现的点是x 则c中其他店都是x的后代 我们希望在x访问完成后立即输出c这样就可以在一节课dfs数中区分出所有的 scc了。因此问题的 关键是判断一个点是不是一个scc中最早发现的点。联系求割点算法, 若是一个点u,low[u]==pre[u] 即一个点不能连到比他更早的祖先节点 而最多只能连到他自己 就说明他是这个scc中最早发现的点算法模板:#include#include#include#includeusing namespace std;int pre[5002],low[5002],lt_num,c,scc_n 阅读全文
posted @ 2013-09-10 15:56 galaxy77 阅读(515) 评论(0) 推荐(0) 编辑
摘要: 给出一个完全二分图 每条边有一个权值 要求求出权值和最大的完美匹配代码:#include#include#includeusing namespace std;int c1,c2,w[1002][1002],lx[102],ly[102],s[102],t[102],link[102];void update(){ int i,j; int a=1 2 #include 3 #include 4 5 using namespace std; 6 struct node{int x;int y;} man[102],house[102]; 7 char ss[102][... 阅读全文
posted @ 2013-09-09 22:06 galaxy77 阅读(224) 评论(0) 推荐(0) 编辑
摘要: ok 阅读全文
posted @ 2013-09-07 20:07 galaxy77 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 先贴个ISAP的算法模板 从源点s到汇点t 结点共有n个算法部分基本都是这模板 主要看思路和建图 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 struct E{int f... 阅读全文
posted @ 2013-09-06 21:39 galaxy77 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 把i 和 j写错了找得人都要抓狂了。。题意:给出n个字符串,其中任意两个字符串(包括同一字符串)可以进行互相拼接起来,例如s1="abcd"……>s2="dcab",表示将s1拼接在s2后面,所得的值就是将s1反转得"dcba",该字符串与s2同有的前缀为"dc",所以值就是2.现在求解在n个字符串给定的情况下,将这些字符串拼接起来所得到的最大值.关键是建图,之后运用KM算法,ok! 1 #include 2 #include 3 #include 4 int mark[1002],n; 5 char ss[ 阅读全文
posted @ 2013-08-17 18:15 galaxy77 阅读(326) 评论(0) 推荐(0) 编辑
摘要: #include#include#includeint mark[1002],link[1002],n;char s[202][1020];int g[202][202],s[202],t[202],lx[202],ly[202],link[202];char temp[1002];int min(int x,int y){ return x>y?y:x;}void rev(int x,int len){ int i,j; for(i=0,j=len-1;i=g[i][j]&&!t[i]) { t[i]=1; if(l... 阅读全文
posted @ 2013-08-17 11:50 galaxy77 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 向量的旋转实际做题中我们可能会遇到很多有关及计算几何的问题,其中有一类问题就是向量的旋转问题,下面我们来具体探讨一下有关旋转的问题。首先我们先把问题简化一下,我们先研究一个点绕另一个点旋转一定角度的问题。已知A点坐标(x1,y1),B点坐标(x2,y2),我们需要求得A点绕着B点旋转θ度后的位置。A点绕B点旋转θ角度后得到的点,问题是我们要如何才能得到A'点的坐标。(向逆时针方向旋转角度正,反之为负)研究一个点绕另一个点旋转的问题,我们可以先简化为一个点绕原点旋转的问题,这样比较方便我们的研究。之后我们可以将结论推广到一般的形式上。令B是原点,我们先以A点向逆时针旋转为例,我们过A&# 阅读全文
posted @ 2013-08-14 18:44 galaxy77 阅读(3330) 评论(0) 推荐(0) 编辑
摘要: 题意找 一个图是否 任意两点都可以从 u 到v 或者 从v到u 注意是或者 所以不是一个简单的强连通图思路 : 先找出这个图的 强连通分量 在强连通分量里任意两点都是可以互相到达的 再看 缩点后 在拓扑排序时是否入度为0 的点一直会《=1 若中间有一步 发现入度为0 的点>=2 就直接可以判断这两个点热河一个点都到达不了对方 应该输出 no代码有点长 再次提醒自己 细心!#include#include#include#includeusing namespace std;int pre[1002],low[1002],c,sccnum[1002],degree[1002],scc,n; 阅读全文
posted @ 2013-08-14 18:12 galaxy77 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 一 : 求最大匹配问题 (匈牙利算法)给一个二分图 找一个边数最大的匹配 使得任意两条选中的边 均没有公共点先贴一个匈牙利算法的模板:hdu 2063 过山车 http://acm.hdu.edu.cn/showproblem.php?pid=2063题意:有M个女生,N个男生,他们要玩过山车又必须是一男一女一起,女生... 阅读全文
posted @ 2013-08-13 12:11 galaxy77 阅读(342) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1659题意: 输入每个点的度 要用邻接矩阵输出可能的图havel 定理#include#include#include#includeusing namespace std;struct node{int x;int w;}no[10000];int p[1002][1002],n;int cmp(node a,node b){ return a.w>b.w;}int solve(){ int j,i,k; for(i=0;in-i-1) return -1; for(j=i+1;j<n... 阅读全文
posted @ 2013-08-05 12:06 galaxy77 阅读(226) 评论(0) 推荐(0) 编辑