上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 21 下一页
摘要: http://poj.org/problem?id=3352题意:给出一个有n个顶点m条边的无向连通图,问至少添加几条边,使删除任意一条边原图仍连通。思路:一个边双连通图删除任意一条边仍为连通图。故此题即为求原图添加几条边能成为边双连通图。先对无向图中的强连通分量进行缩点,所有的缩点就能构成一棵树,节点之间的连线即为桥。只需将树中的叶子节点相连,就能构成一个边双连通图。叶子节点即为度为1的连通分量。low[i]值相同的点在同一个连通分量中。所加边数=(叶子数+1)/2; 1 #include 2 #include 3 #include 4 #include 5 using namesp... 阅读全文
posted @ 2014-02-16 21:07 N_ll 阅读(514) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=3592题意:给出一个n*m的矩阵,左上角代表起始点,每个格子都有一定价值的金矿,其中‘#’代表岩石不可达,‘*’代表时空门可以到达指定格子,求出可以获得的最大价值。思路:时空门的存在可能会使得图中出现环,所以先对强连通分量进行缩点,然后对于缩点后的连通分量建立有向无环图,spfa求到起始点的最长路。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int N=2020; 8 const int... 阅读全文
posted @ 2014-02-16 16:29 N_ll 阅读(280) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=1396挺坑的一道题,调试了一天跪在了格式上,要注意的情况很多,样例太没有代表性了,很容易理解错格式。。要注意的情况:(1)(加法、减法) 水平线 '----' 的数量为它相邻两侧字符串的最大长度。 (2)(乘法) 当第二个数为一位数时,’----'的数量同(1); 否则输出两次’----‘,最上面的’-----‘数量同(1),下面的’----‘数量为最后结果的长度。 (3)计算减法的时候,结果要去掉前导0。 (4)注意右对齐,每组数据后有一个空行。样例:(1) 999 1000 100(2) 1231240(3) 8 阅读全文
posted @ 2014-02-16 01:53 N_ll 阅读(485) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=3417元宵节+情人节晚上刷的题,纪念一下。。题意:给出n个点,m条边,然后Q个询问,每次询问输入一条边,输出加入此边后桥的个数。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 const int N=205000; 7 using namespace std; 8 struct node 9 { 10 int u,v,w; 11 int next; 12 } edge[N*2]; 13 ... 阅读全文
posted @ 2014-02-14 23:15 N_ll 阅读(276) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=3114题意:有n个城市,m条边,由a城市到b城市的通信时间为w,若a城市与b城市连通,b城市与a城市也连通,则a,b城市之间的通信时间为0,求出从s到t的最少通信时间。思路:先由Tarjan算法求出图中的连通分量,则在同一个连通分量里的城市之间的通信时间w更新为0,然后利用spfa求出s城市与t城市之间的最短路,即为最少通信时间。 1 #include 2 #include 3 #include 4 #include 5 #include 6 const int N=505; 7 const int INF=1S; ... 阅读全文
posted @ 2014-02-14 10:29 N_ll 阅读(259) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=2186题意:有n头奶牛,给出m对奶牛之间的关系(a,b),表示a欢迎b。欢迎关系是单向可传递的,并且每个奶牛都是欢迎自己的。求出被所有奶牛欢迎的奶牛的数量。思路:求出所有的连通分量(Tarjan算法),然后求出每个连通分量的出度,如果出度为0的连通分量大于一个,则该图不连通,输出0;如果出度为0的连通分量只有一个,则在该连通分量里的点即为受所有奶牛欢迎的奶牛,输出该连通分量里的点数即可。 1 #include 2 #include 3 #include 4 #include 5 const int N=100010; 6... 阅读全文
posted @ 2014-02-13 21:38 N_ll 阅读(149) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=3422 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int INF = 1q; 45 q.push(n*n*2); 46 vis[n*n*2] = true; 47 while(!q.empty()) 48 { 49 int u = q.front(); 50 vis[u] = false; 51 q.pop(); 52 ... 阅读全文
posted @ 2014-02-13 13:57 N_ll 阅读(159) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=2195题意:在一个n*m的图中,'m'代表人,'H'代表房子,人每移动一次的费用为1,求所有人移动到房子里的最小花费。思路:最小费用最大流问题。关键是建图,建好图后就是MCMF的模板题了。。 关于建图:增加一个原点S,一个汇点T, S与所有人相连,容量为1,花费为0;每个人与所有房子相连,容量为1,花费为|人与房子的水平距离|+|人与房子的垂直距离|;最后所有的房子 与汇点相连,容量为1,花费为0。 关于算法:多次spfa找增广路,然后求最大流。最小花费+=原点到汇点的最小距离*每次增光后的最大流量 1 #i 阅读全文
posted @ 2014-02-12 21:36 N_ll 阅读(269) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=1850题意:求所给字符串按照题目的编码规则,它的编码应是多少? 1 #include 2 #include 3 #define LL long long 4 5 double C(int a,int b)//计算组合数C(a,b) 6 { 7 if(a 0)11 {12 res*=(double)a--/(double)b--;13 }14 return res;15 }16 int main()17 {18 char s[120];19 while(~scanf("... 阅读全文
posted @ 2014-02-11 20:55 N_ll 阅读(154) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=3020题意:一个矩形中,有N个城市'*',现在这n个城市都要覆盖无线,若放置一个基站,它至多可以覆盖相邻的两个城市。问至少放置多少个基站才能使得所有的城市都覆盖无线?无向二分图的最小路径覆盖 = 顶点数 – 最大二分匹配数/2 1 #include 2 #include 3 const int N=505; 4 int pos[N][N],map[N][N]; 5 int link[N]; 6 bool vis[N]; 7 int dir[4][2] = {{0,-1},{0,1},{1,0},{-1,0}}; 8 int 阅读全文
posted @ 2014-02-11 19:07 N_ll 阅读(185) 评论(0) 推荐(0)
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 21 下一页