zoj 1203 Swordfish

最小生成树,简单的模板题 #include #include #include #include #include #include using namespace std; const int MAXN = 110; const int MAXM = 5010; struct Edge { int u, v; double w; }; int n, m; int p...
阅读(427) 评论(0)

1459 Power Network

设容量网络为G(V, E),f是其可行流,对于一个残留网络G'(V, E),如果一个函数d将顶点集合V映射到非负整数集合,则称d是关于残留网络G'的距离函数(distance function)。d(u)称为顶点u的距离标号(distance label)。   如果距离函数d满足: (1) d(Vt) = 0, (2) 对G'中的任意一条弧,有d(u)≤d(v)+1, 则称距离函数...
阅读(410) 评论(0)

poj 2112 Optimal Milking

/** 先用floy求出各个挤奶器到各个奶牛的最短距离,因为题中给的距离不一定是最短的! 然后再用二分的方法去找答案,即在0~max(max为奶牛到挤奶器可能的最大距离,我认为是200*200=40000) 用二分查找的方法去找最大距离的最小值;不断用mid的值去建网络流图添加源点0,汇点n+1, 源点到所有挤奶器的距离为m.即map2[0][1..k]=m;奶牛到汇点的距离为1即map2[k+...
阅读(352) 评论(0)

网络流 练习

题目:利用Ford_Fulkerson (标号法)求图1(a)及2(a)所示的容量网络的最大流,输出各条弧及其流量,以及求得的最大流流量。   (1) (2) 分析:        在下面的程序中,以邻接矩阵存储容量网络,但邻接矩阵中的元素为结构体ArcType类型变量。该结构体描述了网络中弧的结构,包含容量c和流量f两个成员。在程序中,还定义了三个数组:flag[n], prev...
阅读(510) 评论(0)

zoj 1083 Frame Stacking

#include #include #include using namespace std; const int SIZE=30,NUM=26; struct square { int up, right, down, left; }alpha[NUM]; int N,M,cnt,id[NUM];//cnt 图的种类数目,id[i]表示顶点i的入度 bool cover[SIZE...
阅读(661) 评论(0)

poj 2585 Window Pains zoj 2193

代码预处理了一下kinds(),表示覆盖方格(i, j)的窗口的集合,本题利用字符串的特性来储存的。 如果 !g[ screen[i][j] ][ cover[i][j][p] - '0' ] && ( screen[i][j] != cover[i][j][p] - '0' ),则存在一条有向边。 本题把每个窗口都抽象成一个顶点,如果窗口X覆盖窗口Y的话,则存在一条有向边,最后利用拓扑排序,...
阅读(723) 评论(0)

poj 1094 Sorting it all out

这题很奇怪,在zoj上一直过不了,不知道问题出现在哪里。不过在poj上过了 #include #include #include #include #include using namespace std; int kcount[26];//入边表,记录定点的入度 int temp[26];//就是kcount的拷贝,在拓扑排序时用于修改 char relation[3],seq[...
阅读(334) 评论(0)

拓扑排序 练习

例:对输入的有向图进行拓扑排序,并输出一个拓扑有序序列;如果存在有向环,则给出提示信息。   输入描述:       假设输入文件中有向图的格式为:首先是顶点个数n和边数m;然后是每条边,每条边的数据占一行,格式为u v,表示从顶点u到顶点v的一条有向边,顶点序号从1开始计起。输入文件最后一行为0 0,表示输入数据结束。 样例输入:             样例输出: 6 8...
阅读(396) 评论(0)

hdu 2377 zoj 2913

点击打开题目 本题就是求中心区域 设置一个数组res[i]用来存放每一个区域i到达公交路线上所有区域的最大值,最后再求res[i]的最小值,则i即是求得的中心区域; 利用BFS搜索以及滚动数组的特性即可以求出。     参见代码: #include #include #include #include #include using namespace std; #defi...
阅读(599) 评论(0)

ZOJ 1649 Rescue

本题要求从r 位置出发到达Angel所在位置并且所需时间最少,适合采用BFS求解。但是BFS算法求出来的最优解通常是步数最少的解,而在本题中,步数最少的解不一定是最优解.      在本题中,并没有使用标明各位置是否访问过的状态数组visited,也没有在BFS过程中将访问过的相邻位置设置成不可再访问,那么BFS过程会不会无限搜索下去呢?实际上是不会的,因为从某个位置出发判断是否需要将它的相邻位...
阅读(558) 评论(0)

ZOJ 2165 Red and Black

题目 简单搜索,注意W,H各表示什么; #include #include #include using namespace std; const int MAXN = 25; char map1[MAXN][MAXN]; int W, H; int stepnum; int dir[4][2] = { {-1, 0}, {0, 1}, {1, 0}, {0, -1} }; b...
阅读(738) 评论(0)

zoj 1008 Gnome Tetravex

题目  点击打开链接   #include #include using namespace std; const int MAXN = 50; int map1[MAXN][MAXN];//存放的是已匹配的方块标号,如果可以实现题目结果,则最后map1中即是所求的一种情况。 int n; bool tmp; struct Node { int up, right, do...
阅读(545) 评论(0)

2412 zoj

/** 因为每一块地,最多只有四个水管的接口,故而可以把每一块土地上,下,左,右,都标记成0或1(0,代表该方向没有接口;1,代表该方向有接口) DFS(int x, int y){ 从第一块开始搜索,如果: 该土地的1.Land[x][y].up=1,则如果和其他土地连通必有,Land[x-1][y].down = 1;(注意:Land[x-1][y]是在Land[x][y]的上方) 2.Lan...
阅读(429) 评论(0)

zoj 1709 Oil Deposits

题目 点击打开链接 #include #include using namespace std; const int MAXN = 105; char map1[MAXN][MAXN]; int dir[8][2] = { {-1, 0}, {-1, -1}, {0, -1}, {1, -1}, {1, 0}, {1, 1}, {0, 1}, {-1, 1} }; int m, n; v...
阅读(510) 评论(0)

ZOJ 1364 Machine Schedule

#include #include using namespace std; const int MAXN = 105; int xs[MAXN],ys[MAXN]; int mk[MAXN]; int nx, ny; int g[MAXN][MAXN]; int path( int u ) { for(int v = 1; v <= ny; ++v) { ...
阅读(451) 评论(0)
16条 共2页1 2 下一页 尾页
    个人资料
    • 访问:283011次
    • 积分:7325
    • 等级:
    • 排名:第3352名
    • 原创:471篇
    • 转载:19篇
    • 译文:0篇
    • 评论:19条