摘要: 题意:问图上任意两点(u,v)之间的路径上,所经过的最大边权最小为多少?求最小瓶颈路,既是求最小生成树。因为要处理多组询问,所以需要用倍增加速。先处理出最小生成树,prim的时间复杂度为O(n*n),kruskal为O(mlogm)。前者适合处理稠密图,后者适合处理稀疏图。这里的倍增处理是值得记住的,在树上做多组询问;亦或是,将无向图缩点在询问,都是可以这样加速的。注意:边权 2 #include 3 #include 4 #include 5 #include 6 #define clr(a,m) memset(a,m,sizeof(a)) 7 #define rep(i,a,b... 阅读全文
posted @ 2013-08-25 12:57 Thousand Sunny 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 题意:对于已知的网络构建道路,使城市两两之间能够互相到达。其中一条道路是可以免费修建的,问需要修建的总长度B与免费修建的道路所连接的两城市的人口之和A的比值A/B最大是多少。因为是求A/B的最大值,自然A越大,B越小越好。B的最小值是可以用最小生成树算法求解的,但是,由于免费修建一条道路,使得B值 2 #include 3 #include 4 #include 5 #include 6 #define clr(a,m) memset(a,m,sizeof(a)) 7 #define rep(i,a,b) for(int i=a;iq;26 double cnt=0;27 28 ... 阅读全文
posted @ 2013-08-25 10:28 Thousand Sunny 阅读(263) 评论(0) 推荐(0) 编辑