两种做法1:本来想的是枚举每个点u,从s搜到u,再从t搜到u,如果两条路径只有u这一个公共点,则u可以在简单路径上,后来举出了一个反例就推翻掉了,囧。。。。。。但现在发现这个想法是下一个想法的铺垫。模型是:是否存在s->u的一条路径与t->u的另一条路径只有u这一个交点单纯的搜索很难弄,比如广搜,搜到的路径都是最短路径,很容易就可以举出反例推翻掉。举个例子:先发一张比较挫的图片这个例子中,每个点都可以成为s->t的简单路径上的点,所以答案是0.如果用搜索,很可能s->y->v->u t->v->u,而忽略了s->y->x->u导 Read More
题目要求至少添加几条边才能使去掉人和一条边后,图还是连通的首先进行双连通缩点,一个连通块就相当于新图中的一个点新的图形成了一棵树要想添加若干条边后任意去掉一条原图中的边后图还是连通的,我们应该将叶子连起来,使得任何一个叶子都有连接到别的叶子的边很显然,叶子总数cnt为偶数时,答案为cnt/2;叶子总数为奇数时,答案为(cnt+!)/2;View Code #include<stdio.h>#include<queue>#include<string.h>#include<vector>using namespace std;const int m Read More
同poj 3342http://www.cnblogs.com/wuyiqi/archive/2012/03/08/2385680.htmlView Code #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>#include<string>#include<map>using namespace std;#define max(a,b) a>b?a:bconst int maxn = Read More