图论
ZoneFv
这个作者很懒,什么都没留下…
展开
-
HDU 2586 How far away ? LCA的Tarjan离线算法
http://acm.hdu.edu.cn/showproblem.php?pid=2586 LCA的Tarjan离线算法,由于询问的次数比较多,所以用普通的最短路算法肯定行不通 思路:dfs+并查集 用两个邻接表分别保存图和需要求的点 在深搜的过程中,求出所有结点到根结点的距离保存在数组path[ ]中,把所要求的两点的距离保存在father[ ]数组里面,flag[ ]记录结点是否被搜原创 2012-08-04 17:13:16 · 1049 阅读 · 0 评论 -
nyoj 239 月老的难题 二分图最大匹配(匈牙利算法)
如果对匈牙利算法不太懂的——请猛击 二分图最大匹配的第一题,主要是对增广路的理解,上面博客讲的很清楚,不再罗嗦,上代码—— #include #include #include using namespace std; int n; vector g[505]; //记录边 int mach[505],count; bool flag[505]; bool find(int x)原创 2012-08-07 11:05:12 · 1479 阅读 · 0 评论 -
hdu 1281 棋盘游戏 二分图最大匹配
题目分析:这一题的最大难点在于寻找关键点的个数,处理的方法是找出最大匹配数ans,然后枚举每一条边,如果删除这条边后再次求出的最大匹配与ans不相等,则是关键点,否则就不是关键点 #include #include const int N=105; int map[N][N]; int x[N*N],y[N*N]; int flag[N],match[N]; int n,m,k; int fin原创 2012-12-06 15:15:57 · 851 阅读 · 0 评论 -
hdu 2444(染色法判断二分图+匈牙利算法)
题意:首先判断是否是二分图,如果不是的话输出No,如果是的话输出最大匹配 判断二分图:运用染色法,相邻的两个点间染不同的颜色,如果遇到相邻的点是同一颜色的,则不是二分图 具体实现:通过广搜遍历所有的点,判断是否有相邻的点是同一颜色(一定要遍历所有的点),找最大匹配的时候就用匈牙利算法,最后找到的count要除以2,因为找最大匹配的时候每个点都找了,所以求出的count值是最大匹配的二倍 网上原创 2012-12-05 20:35:08 · 2636 阅读 · 2 评论 -
HDU 1233 还是畅通工程
http://acm.hdu.edu.cn/showproblem.php?pid=1233 题目比较简单,最小生成树,用kruskal写的,保存下来,以后当做模版用 #include #include struct stu { int u,v,w; }r[5000]; int p[100],n,m; bool cmp(struct stu r1,struct stu r2)原创 2012-07-30 11:30:56 · 666 阅读 · 0 评论 -
nyoj 434 Jungle Roads
http://acm.nyist.net/JudgeOnline/problem.php?pid=434 比简单的一道最小生成树模板题,关键点在于建图时,数据读写格式的处理,由于没处理好,re了无数次 #include #include #define MAX 1<<28 int map[40][40]; int n; int prime() { bool flag[40];原创 2012-07-29 10:43:20 · 781 阅读 · 0 评论 -
nyoj 38 布线问题
http://acm.nyist.net/JudgeOnline/problem.php?pid=38 第一道最小生成树,prime算法 #include #include #define MAX 1<<28 int map[505][505]; int e,v; int prime() { bool flag[505]; int path[505],i,j,sum=原创 2012-07-28 16:33:29 · 1001 阅读 · 0 评论 -
HDU 4318 Power transmission
http://acm.hdu.edu.cn/showproblem.php?pid=4318 昨天比赛的时候看的这一题,感觉是最短路(PIAOYI竟然说这不是最短路,是深搜,必须又吵了一架),再加上这几天正在研究最短路,轻车熟路就用SPFA开始写起来了,写了一会儿,写出来了,测试样例也过了,提交,wa了,修改一下再交.......一直wa了17次。 今天上午,听洛神讲解了这一题,顿悟啊 变相原创 2012-07-28 12:03:57 · 800 阅读 · 0 评论 -
HDU 1874 畅通工程续
http://acm.hdu.edu.cn/showproblem.php?pid=1874 第一次floyd算法,求最短路 #include #include using namespace std; const int M=1<<29; int map[201][201]; int n,m; void floyd() { int k,i,j; for(k=0;k<n;原创 2012-07-25 09:42:09 · 633 阅读 · 0 评论 -
HDU 2544 最短路
http://acm.hdu.edu.cn/showproblem.php?pid=2544 自己写的最短路第一题,dijstra算法 #include #include using namespace std; int dp[105][105]; int dijstra(int beg,int end) { bool flag[105]; int path[105];原创 2012-07-24 18:35:03 · 624 阅读 · 0 评论 -
nyoj 115 城市平乱
http://acm.nyist.net/JudgeOnline/problem.php?pid=115 dijstra算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。 思路:以叛乱城市为起点,寻找最短的驻部队城市 #include #include #define INT_MAX 1<<29 int map[1005][1005]; int m,n,s[105];原创 2012-07-25 18:35:15 · 2311 阅读 · 0 评论 -
hdu 3549 Flow Problem 最大流入门 EK算法
http://acm.hdu.edu.cn/showproblem.php?pid=3549 核心思想:通过广搜搜来找增广路(简单的说就是可以增大流量的路),找的同时记录路径,到达汇点的时候根据记录的路径更新残量网路,一直到找不到增广路 #include #include #include using namespace std; const int N=1005; int map[原创 2012-11-08 21:46:16 · 1216 阅读 · 2 评论