
图论
文章平均质量分 80
fyfcauc
这个作者很懒,什么都没留下…
展开
-
poj-2446
#include #include #define MAX 35#define GRID_MAX MAX*MAXint G[MAX][MAX];char G_relation[GRID_MAX][GRID_MAX];int M; // lengthint N; // heightint K;int validGridNum;int V1[GRID原创 2014-07-15 17:56:37 · 558 阅读 · 0 评论 -
poj-2531
// 3916K 375MS G++#include #include using namespace std; #define MAX 22 int NodeBitId[MAX]; int G[MAX][MAX]; #define INF 99999; long MAXT; void initNodeBit原创 2014-07-22 20:20:22 · 371 阅读 · 0 评论 -
poj-2676
// 356K 16MS G++#include #include #include #define MAX 9using namespace std;char initBoard[MAX][MAX];int initFIlledNum;void printBoard(char board[MAX][MAX]) { for (int i = 0; i < M原创 2014-07-23 15:27:22 · 574 阅读 · 0 评论 -
趣写算法系列之--匈牙利算法
from: http://blog.youkuaiyun.com/dark_scope/article/details/8880547【书本上的算法往往讲得非常复杂,我和我的朋友计划用一些简单通俗的例子来描述算法的流程】匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增转载 2014-07-13 16:41:44 · 368 阅读 · 0 评论 -
poj-3026
//664K 79MS G++#include #include #include using namespace std;#define LENGTH_MAX 54#define NODE_MAX 110#define WALL -1int maze[LENGTH_MAX][LENGTH_MAX]; // 0: nothing -1: wall >0: S or A'原创 2014-07-13 09:19:21 · 522 阅读 · 0 评论 -
匈牙利算法
from https://www.byvoid.com/blog/hungary/链接: USACO 4.2.2 The Perfect Stall 完美的牛栏 stall4这是一种用增广路求二分图最大匹配的算法。它由匈牙利数学家Edmonds于1965年提出,因而得名。 定义 未盖点:设Vi是图G的一个顶点,如果Vi 不与任意一条属于匹配M的边相关联,就称Vi 是一个未盖转载 2014-07-13 14:41:32 · 399 阅读 · 0 评论 -
poj-2485
//1356K 172MS G++#include #include #define NODE_MAX 505int map[NODE_MAX][NODE_MAX];int key[NODE_MAX];int visited[NODE_MAX];int nodeNum;#define INF 999999void solve() { long distanceSum原创 2014-07-12 20:05:37 · 494 阅读 · 0 评论 -
poj-1125
// 3072K 250MS Javaimport java.util.Arrays;import java.util.Comparator;import java.util.Scanner;public class Main{ private static final int INF = 99999; private static final原创 2014-07-09 10:37:35 · 520 阅读 · 0 评论 -
poj-1062
//5056K 1750MS Javaimport java.util.Scanner;import java.util.LinkedList;public class Main { private static int sDealerNum; private static int sMaxPosDiff; public int dealPrice;原创 2014-07-08 15:48:32 · 554 阅读 · 0 评论 -
二分图匹配
from http://endlesscount.blog.163.com/blog/static/821197872012622103810976/前段时间系统的学习了一下二分图匹配,收获还是蛮大的,总算是把最大匹配、点覆盖、点独立、边覆盖什么的关系搞清楚了,基本的算法和定理都会了,剩下的就是建模问题了,这个只能慢慢积累了,最后写个小结。一、二分图最大匹配转载 2014-07-13 14:36:54 · 551 阅读 · 0 评论 -
二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配
二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配From: http://dsqiu.iteye.com/blog/1689505文本内容框架:§1图论点、边集和二分图的相关概念和性质§2二分图最大匹配求解匈牙利算法、Hopcroft-Karp算法§3二分图最小覆盖集和最大独立集的构造§4二分图最小路径覆盖求解§5二分图带转载 2014-07-15 09:42:56 · 672 阅读 · 0 评论 -
poj-1325
// 428K 0MS G++ #include #include #define MAX 110#define JOB_MAX 1020int G[MAX][MAX];int n;int m;int k;int V1[MAX];int V2[MAX];int waitingMove[MAX];char getPair(int beginId) {原创 2014-07-15 14:47:46 · 394 阅读 · 0 评论 -
poj-1469
//756K 469MS G++#include #include #define MAX 310int G[MAX][MAX];int V1[MAX];int V2[MAX];int P; // course numint N; // student numint waittingMove[MAX];char getPair(int curId) {原创 2014-07-15 15:39:40 · 423 阅读 · 0 评论 -
poj-3041
//1380K 47MS G++#include #include #define MAX 510int N;int K;int Vset1[MAX]; // rowint Vset2[MAX]; // columnint G[MAX][MAX]; // 0: no asteriod, 1: asteriodint assignedFlag[MAX];int waitin原创 2014-07-13 18:28:08 · 404 阅读 · 0 评论 -
poj-1426
#include #include #include #include using namespace std;#define MAX1 45#define MAX_R 100000struct BFSNode{ int digitCapacity; int reminderArraySize; int reminderArray[MAX1]; //原创 2014-07-21 20:54:23 · 475 阅读 · 0 评论 -
poj-3414
//596K 32MS G++ #include #include #include #define MAX 102using namespace std;const char OP[6][10] = { "FILL(1)", "FILL(2)", "DROP(1)", "DROP(2)", "POUR(1,2)", "POUR(2,1)"原创 2014-07-22 16:25:37 · 480 阅读 · 0 评论 -
poj-1416
// 1612K 16MS G++#include #include #include #include #include using namespace std;int targetNum;int inputNum;string inputNumStr;struct BFSNode { int splitterPos; // x means ins原创 2014-07-23 11:43:15 · 609 阅读 · 0 评论 -
最小边覆盖与最小路径覆盖的联系与区别
From: http://blog.youkuaiyun.com/wall_f/article/details/8187144鉴于我一直没有分清楚最小边覆盖与最小路径覆盖的关系,于是我就写写总结。边覆盖集:通俗地讲,所谓边覆盖集,就是G中所有的顶点都是E*中某条边的邻接顶点(边覆盖顶点),一条边只能覆盖2个顶点。注意:在无向图中存在用尽量少的边去“覆盖”住所有的顶点,所以边覆盖集有极小与最小的转载 2014-07-16 12:04:49 · 629 阅读 · 0 评论 -
图 基本术语
From: http://baike.baidu.com/link?url=B_FVfPo9u1DvKHCvl3zBIEq-wzN_U-K95BzE8T6NOHB-FO2aCnhgJZWuoPT-rcewYg9DUnlyreCs8g3AhUkTj_阶(Order):图G中顶集V的大小称作图G的阶。子图(Sub-Graph):G'称作图G=(V,E)的子图,当图G'=(V',E'),且V转载 2014-07-16 12:07:33 · 629 阅读 · 0 评论 -
poj-1422
//440K 0MS G++#include #include #define MAX 125int G[MAX][MAX];int iNum;int sNum;int V1[MAX];int V2[MAX];char waitingMove[MAX];char getPair(int checkId) { for (int i = 1; i <= iNum原创 2014-07-16 11:51:26 · 521 阅读 · 0 评论 -
poj-2594
// 2712K 266MS G++ #include #include #include using namespace std;#define MAX 520int G[MAX][MAX];int G_F[MAX][MAX];int iNum;int sNum;int V1[MAX];int V2[MAX];char waitingMove[MAX];原创 2014-07-16 17:14:04 · 504 阅读 · 0 评论 -
图算法之:匈牙利算法(最大二分匹配)
匈牙利算法是解决寻找二分图最大匹配的。(一)预备知识 什么是二分图:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 什么是匹配:把上图想象成3男4女搞对象(无同性转载 2014-07-17 17:02:25 · 432 阅读 · 0 评论 -
二分图带权匹配 KM算法与费用流模型建立
From: https://www.byvoid.com/blog/match-km/[二分图带权匹配与最佳匹配]什么是二分图的带权匹配?二分图的带权匹配就是求出一个匹配集合,使得集合中边的权值之和最大或最小。而二分图的最佳匹配则一定为完备匹配,在此基础上,才要求匹配的边权值之和最大或最小。二分图的带权匹配与最佳匹配不等价,也不互相包含。我们可以使用KM算法实现求二分图的最转载 2014-07-16 20:18:35 · 646 阅读 · 0 评论 -
poj-1321
// 376K 16MS G++#include #include #define MAX 10char occupiedColumn[MAX];char occupiedRow[MAX];char board[MAX][MAX];int W;int H;int chessNum;#define INF 99999int dfs(int rowId, int原创 2014-07-21 10:24:04 · 499 阅读 · 0 评论 -
poj-3009
//376K 172MS G++#include #include #define MAX 30int W;int H;int board[MAX][MAX];int Sx;int Sy;int Gx;int Gy;#define INF 99999int dfs(int curX, int curY, int throwTime) { int minThr原创 2014-07-20 20:11:57 · 549 阅读 · 0 评论 -
poj-2488
//376K 16MS G++#include #include #define MAX 28 int board[MAX][MAX];int p;int q;struct Point{ int x; int y;};typedef struct Point Point;Point visitOrder[MAX];int visitedSquareNum;in原创 2014-07-19 22:28:51 · 429 阅读 · 0 评论 -
poj-2251
//788K 0MS G++#include #include #include #define MAX 50using namespace std;char maze[MAX][MAX][MAX]; // z , y, xstruct Pos { int x; int y; int z; int time;};typedef struc原创 2014-07-21 11:16:40 · 469 阅读 · 0 评论 -
poj-3083
// 700K 0MS G++#include #include #include using namespace std;#define MAX 50char maze[MAX][MAX];char leftFirst[2] = {-1, 1};char rightFirst[2] = {1, -1};struct Point { int x; int y; i原创 2014-07-20 15:27:51 · 594 阅读 · 0 评论 -
poj-3278
// 1152K 47MS G++#include #include #include #define MAX 100001using namespace std;struct Pos { int x; int time;};typedef struct Pos Pos;queue BFSQueue;int Bx;int Ex;in原创 2014-07-21 13:21:56 · 550 阅读 · 0 评论 -
poj-3126
// 600K 16MS G++#include #include #include #include using namespace std;char compositeNum[10000];char BFSFlag[10000];void getPrime() { int max = 100; int begin = 2; while(be原创 2014-07-22 12:15:11 · 494 阅读 · 0 评论 -
poj-3020
//1336K 0MS G++#include #include #define H_MAX 41#define W_MAX 12#define POINT_MAX H_MAX*W_MAXint G[H_MAX][W_MAX];int releationG[POINT_MAX][POINT_MAX];int H;int W;int pointNum;str原创 2014-07-14 21:32:56 · 491 阅读 · 0 评论