上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页
摘要: 题意: 某个公园要修路..这将导致两个景点无法连通 输入: 给出n m 表示有n个景点 m条路 接下来m行每行有a b 表示a景点和b景点相连.. 问加几条边可以使任意两个景点都相连..思路: 先用tarjan算法求出每个连通分量 然后对无向图来说..变成双连通分量的方法就是(入度为1的点+1)/ 2Tips: 无视POJ的simple输入输出 都是坑人的..T0T 还有就是现在这样tarjan算法第一次调用的时候就是tarjan(1, 1)Code: View Code 1 #include <stdio.h> 2 #include <cstring> 3 #incl 阅读全文
posted @ 2012-10-05 12:09 Griselda. 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 题意: 很久很久以前.. 有一个国王.. 他有好几个儿子.. 这些王子都喜欢上了邻国的公主.. 他们准备迎娶自己喜欢的公主中的一个.. 国王就让宰相给列一个清单.. 宰相就给了国王一个清单..上面写明了哪个王子将迎娶哪个邻国的公主.. 但是调皮的国王不太满意~~ 他还想知道他的儿子分别可以迎娶哪几个公主中的一个而不会让他的兄弟因此而吃醋.. 所以宰相又得重新写清单了.. 噢..对了~邻国的公主和王子人数一样多~<这是一个奇怪的国家..> 输入: 一个n表示有n个王子.. 接下来n行每行有一个m表示第i个王子喜欢m个公主.. 然后给出m个公主的序号.. 最后一... 阅读全文
posted @ 2012-10-05 07:54 Griselda. 阅读(179) 评论(0) 推荐(1) 编辑
摘要: 题意: 给出n个点和他们之间的一些关系.. 问加多少条边可以使所有的点变成强连通分量..思路: 根据题意就可以知道有这个推理: 原图缩点后的有向无环图.. 出度为0的点和入度为0的点中个数少的那些点向个数多的那些点连线.. 可以使森林变成强连通分量..Tips: 注意如果缩点后变成一个点了.. 则入度为0和出度为0的点的个数都是1 但是实际上已经是强连通分量..不需要连线了.. 所以答案应该是0Code:View Code 1 #include <stdio.h> 2 #include <cstring> 3 #include <algorithm> 4.. 阅读全文
posted @ 2012-10-04 21:42 Griselda. 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出n个学校的兄弟学校..<单方面认为> 如果给了一个软件给某个学校..他就会把这个软件给他的兄弟学校.. 然后求两个解: 1st: 至少准备多少个软件..可以使所有的学校都有这个软件.. 2nd:至少加多少条边..可以使只给一个软件..就能让所有学校都得到这个软件..输入: 一个n 代表有n个学校.. 接下来n行.. 第i行 给出第i个学校的兄弟学校(单方面认为)的列表..以0结束.. 输出两个解的结果..思路:缩点之后把原图变成一个有向无环图.. 两个解可以看成是: 1st:把该有向无环图看成一个森林..求的就是有多少棵树..<即入度为0的根节点的个数... 阅读全文
posted @ 2012-10-04 21:09 Griselda. 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一些房间之间的关系 问任意两个房间是否存在一条互通的路径..即单相连通.. 输入: 给出T表示有T组数据 每组数据给出n m 表示n个房间 m个关系 接下来m行..每行给出a b 表示a房间 和 b房间之间是连通的.. 如果任意两个房间之间存在单相连通..则输出yes 否则 no思路: 先用tarjan算法求出每个强连通分量..然后对每一个进行染色.. 然后建图..拓扑排序.. 如果排序不唯一..就是有超过两个点是有0个初度的.. 这代表其中有两个房间是不相连的..Tips: 点太多或者边太多的情况下.. 就要用前向星建图了..Code:View Code... 阅读全文
posted @ 2012-10-03 21:33 Griselda. 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一些 两个门连通的关系问是否所有房间都连通输入: n m 表示n个房间 m个关系 接下来m行a b 表示房间a和房间b 相连如果房间是互通的 输出yes 否则 no思路: 用tarjan求强连通分量 <强连通分量:有向图中任意两个点存在互通的道路..>Tips: 强连通分量tarjan算法讲解:http://www.byvoid.com/blog/scc-tarjan/zh-hant/Code:View Code 1 #include <stdio.h> 2 #include <cstring> 3 #include <algorithm&g 阅读全文
posted @ 2012-10-03 15:23 Griselda. 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一个每一格带值的矩阵每一次只可以从左上角走到右下角问走过k次后最多能得到多少值P.S 走过的格子值会变成0输入: 给出一个n 和 k 给出n*n 矩阵思路: 因为求的是最大值 所以应该求最长距离..把最小路径改成求最大路径 <相应改变的就是松弛操作 和 dis的初始状态> 为了保证每个点只取一次值 并且 可以经过多次 就进行拆点 然后对应点之间加两条边 ①. 容量为1 费用为该点的值 ②. 容量为INF 费用为0 ①边保证了该点走过后变为0值 ②边保证该点可以经过多次 还有超级源点跟每个点之间连边 容量为k 费用为0 超级汇点和每个拆点之间连边 容量为k 费用... 阅读全文
posted @ 2012-10-02 20:54 Griselda. 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 题意:有一种奇怪的小鱼..他会攻击他认为是女的鱼..<如果她自己也是女的呢?不懂..果然是奇怪的小鱼..>然后生下来的孩子的值等于父母值的异或结果..<更奇怪了..囧~>问最可能得到的孩子值最大是多少~输入: 一个n代表有n条鱼 接下来1行有n个数表示第i条鱼的值 然后n*n行~表示第i行的鱼认为第j行的鱼是女的鱼思路: 根据给出的n*n矩阵~ 得出第i个点对应第j个点..即ij连边的值wij.. 然后转化为求最佳匹配<最大边权匹配>Tips: 读入数据的时候要以字符串的形式.. 坦白说我到现在都没理解一个一个字符读的话为什么会wa.. 求解.. 传说.. 阅读全文
posted @ 2012-10-02 13:26 Griselda. 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 题意:给出m个路径的起点和终点还有长度找出一条路径可以从1到n然后回到1..并保证找到的路径是不重复而且是最短的..思路:容量控制经过只有1次费用控制长度在建完图后求最小费用最大流..就可以找出最短距离..而且没有重复路径..Tips:※ 0点作为超级源点和1相连 n+1作为超级汇点和n相连 然后容量为2费用为0 保证一进一出※ 建图的时候..相邻的正反边要紧挨着写.. 因为更改图中的容量的时候.. edge[load[u]].c -= mn; edge[load[u]^1].c += mn; 位运算表示的是反向边..所以加的时候应该紧挨着加..... 阅读全文
posted @ 2012-10-01 23:45 Griselda. 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 题意:给出供应商供应的商品量和商家需要的商品量以及某个商品在供应商和商家之间的消耗量问商家是否能得到想要的商品量如果可以那怎么安排才是最少花费输入: 给出 n m k 表示有n个商家 m个供应商 k个商品 接下来n行有k个数值表示 第 ni 个商家需要的第k个商品的商品量为ki 接下来m行有k个数值表示 第 mi 个商家需要的第k个商品的商品量为ki 接下来的k个n*m矩阵表示第 ki 个商品 又第 mi 个供应商给第 ni 个商家的消耗 思路: 很明显的最小费用最大流.. 但是建图很特别.. 先求出每个商品的最小花费 然后加起来 固定了超级源点和每个供应商之间的边(容量为供应... 阅读全文
posted @ 2012-10-01 11:22 Griselda. 阅读(233) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页