摘要: 题意就是给出一个f值,然后假如两个点u,v间的所有路径上的最大边中的最小值大于f,那么这个点对是合法的,对于每个询问f,输出有多少个合法点对。最大边最小就是最小瓶颈路,即最小生成树上的路径。一个简单的想法就是求出最小生成树后,n次dfs求出任意两点间的最大边,然后对于每个询问再查找一遍,可是时间复杂... 阅读全文
posted @ 2014-07-10 18:08 贝尔摩德 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 题意给出所有人之间的关系,单向的,问能不能将这群人分成两组,使得每组内部的任意两人都互相认识。先把单向边都换成无向边,即如果a,b互相认识那么不变,如果只是单向边的话那么则认为他们两个不认识,然后假设能分成满足题意的两个集合,那么新图的补图中这两个集合内部是没有边的,所以只要判断补图是不是二分图即可... 阅读全文
posted @ 2014-07-10 17:13 贝尔摩德 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 这两题思路一样。先说下题意。第一道就是一张图,q个操作,每次将一个边x,y增大到z,求出此时的最小生成树的值w,输出这q个w的平均值。第二道是一张完全图,但是有一条未知边不能选,求最小生成树最大可能是多少。对于第一道题,先求出最小生成树,对于每个操作x,y,z,假设x,y不是树边,那么w不变,如果是... 阅读全文
posted @ 2014-07-10 17:00 贝尔摩德 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 水题#include #include using namespace std;int main(){ int n; int c,sum1; double sum2; char str[10]; while(scanf("%d",&n)!=EOF) { ... 阅读全文
posted @ 2014-07-10 16:18 贝尔摩德 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 分类讨论,看分成两堆两边的个数。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 __int64 a[3][3][3]; 8 __int64 f[4],n,k,tep; 9 10 int main... 阅读全文
posted @ 2014-07-10 16:14 贝尔摩德 阅读(211) 评论(0) 推荐(0) 编辑