题解:

最小生成树的两个性质:

1、边权相等的边的个数一定。

2、做完边权为w的所有边时,图的连通性相同。

证明:

1、边权相等的边的个数不一样的话就不会都同时是最小生成树了。

2、假设每种方法的做完边权为w的连通性不同,那么假设i边和j边没有同时被选,那么我们完全可以在一种方案中加入i边(或j边),使得连通性增强,而后面费用更大的边用的更少,这样与这是最小生成树矛盾。于是,命题得证。

代码:不知为何,下面程序有bug,什么时候再回来A掉……

 type node1=record
x,y,w:longint;
end;
node2=record
l,r,v:longint;
end;
var e:array[..] of node1;
a:array[..] of node2;
i,n,m,ans,sum,xx,yy,cnt,tot,j:longint;
fa:array[..] of longint;
function find(x:longint):longint;
begin
if fa[x]<>x then fa[x]:=find(fa[x]);
exit(fa[x]);
end;
procedure qsort(h,l:longint);
var i,j,m:longint;
tmp:node1;
begin
i:=h;j:=l;m:=e[(i+j)>>].w;
repeat
while e[i].w<m do inc(i);
while e[j].w>m do dec(j);
if i<=j then
begin
tmp:=e[i];e[i]:=e[j];e[j]:=tmp;
inc(i);dec(j);
end;
until i>j;
if i<l then qsort(i,l);
if j>h then qsort(h,j);
end;
procedure init;
begin
readln(n,m);
for i:= to m do with e[i] do readln(x,y,w);
qsort(,m);
cnt:=;tot:=;
for i:= to n do fa[i]:=i;
for i:= to m do
begin
if e[i].w<>e[i-].w then
begin
a[cnt].r:=i-;
inc(cnt);
a[cnt].l:=i;
end;
xx:=find(e[i].x);yy:=find(e[i].y);
if xx<>yy then
begin
fa[xx]:=yy;
inc(a[cnt].v);
inc(tot);
end;
end;
a[cnt].r:=m;
if tot<n- then begin writeln();halt;end;
end;
procedure dfs(x,now,k:longint);
var xx,yy:longint;
begin
if now=a[x].r+ then
begin
if k=a[x].v then inc(sum);
exit;
end;
xx:=find(e[now].x);yy:=find(e[now].y);
if xx<>yy then
begin
fa[xx]:=yy;
dfs(x,now+,k+);
fa[xx]:=xx;fa[yy]:=yy;
end;
dfs(x,now+,k);
end;
procedure main;
begin
for i:= to n do fa[i]:=i;
ans:=;
for i:= to cnt do
begin
sum:=;
dfs(i,a[i].l,);
ans:=(ans*sum) mod ;
for j:=a[i].l to a[i].r do
begin
xx:=find(e[j].x);yy:=find(e[j].y);
if xx<>yy then fa[xx]:=yy;
end;
end;
writeln(ans);
end;
begin
init;
main;
end.

ps:A掉了……

是路径压缩的问题,此题数据规模较小,且没有特殊处理,只是简单的修改父节点,所以可以用朴素的不带路径压缩的find函数

JSOI2008 最小生成树计数的更多相关文章

  1. bzoj1016 [JSOI2008]最小生成树计数

    1016: [JSOI2008]最小生成树计数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3517  Solved: 1396[Submit][St ...

  2. BZOJ 1016: [JSOI2008]最小生成树计数( kruskal + dfs )

    不同最小生成树中权值相同的边数量是一定的, 而且他们对连通性的贡献是一样的.对权值相同的边放在一起(至多10), 暴搜他们有多少种方案, 然后乘法原理. ----------------------- ...

  3. 1016: [JSOI2008]最小生成树计数

    1016: [JSOI2008]最小生成树计数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 6200  Solved: 2518[Submit][St ...

  4. 【BZOJ 1016】 1016: [JSOI2008]最小生成树计数 (DFS|矩阵树定理)

    1016: [JSOI2008]最小生成树计数 Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树 ...

  5. 【bzoj1016】[JSOI2008]最小生成树计数

    1016: [JSOI2008]最小生成树计数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4863  Solved: 1973[Submit][St ...

  6. bzoj1016: [JSOI2008]最小生成树计数(kruskal+dfs)

    1016: [JSOI2008]最小生成树计数 题目:传送门 题解: 神题神题%%% 据说最小生成树有两个神奇的定理: 1.权值相等的边在不同方案数中边数相等  就是说如果一种方案中权值为1的边有n条 ...

  7. 【bzoj1016】 JSOI2008—最小生成树计数

    http://www.lydsy.com/JudgeOnline/problem.php?id=1016 (题目链接) 题意 求图的最小生成树计数. Solution %了下题解,发现要写矩阵树,15 ...

  8. [BZOJ]1016 JSOI2008 最小生成树计数

    最小生成树计数 题目描述 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同 ...

  9. 【BZOJ】1016: [JSOI2008]最小生成树计数 深搜+并查集

    最小生成树计数 Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小 ...

  10. BZOJ.1016.[JSOI2008]最小生成树计数(Matrix Tree定理 Kruskal)

    题目链接 最小生成树有两个性质: 1.在不同的MST中某种权值的边出现的次数是一定的. 2.在不同的MST中,连接完某种权值的边后,形成的连通块的状态是一样的. \(Solution1\) 由这两个性 ...

随机推荐

  1. GridView分页排序

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridviewPage.asp ...

  2. Spark Streaming揭秘 Day15 No Receivers方式思考

    Spark Streaming揭秘 Day15 No Receivers方式思考 在前面也有比较多的篇幅介绍了Receiver在SparkStreaming中的应用,但是我们也会发现,传统的Recei ...

  3. psp系统需求分析

    软件开发方向“PSP系统”软件需求规约 目录 1 引言... 4 1.1 目的... 4 1.2 文档格式... 4 1.3 预期的读者和阅读建议... 4 1.4 范围... 5 1.5 术语... ...

  4. Mac下使用sublime text 2开发Python

    入门虽易, 熟练不易, 且行且珍惜 简介:这只是简单介绍一个好的文本工具sublime text的使用,如果要获得详细的教程可以去看这本书<Sublime Productivity>和一些 ...

  5. Matlab生成.dll文件在.NET中加载失败与平台的关系及解决方案

    问题链接地址:http://bbs.elecfans.com/forum.php?mod=viewthread&tid=207995

  6. NGUI系列教程十(Scroll View实现触摸滚动相册效果)

    NGUI中提供了两种Scroll View 一种是通过手指或鼠标滑动视图时移动平面物体,另一种则是直接移动摄像机,他们各有各的好处.但是NGUI提供的Scroll View很难实现类似Android ...

  7. Get the item a SharePoint workflow task is associated with

    This is handy. SharePoint helpfully populates the meta data with the GUID of the list and the ID of  ...

  8. Xcode8 - apploader 上传失败 - ERROR ITMS-90168: "The binary you uploaded was invalid."

    背景:最近电脑升级了系统macOS Sierra 10.12.1:Xcode 也升级到了Version 8.1 (8B62). 问题:使用Application Loader3.0 上传应用到iTun ...

  9. Xcode8 重新配置 CocoaPods -替换阿里源

    一.CocoaPods是什么? CocoaPods是一个负责管理iOS项目中第三方开源库的工具.CocoaPods的项目源码在Github上管理.该项目开始于2011年8月12日,在这两年多的时间里, ...

  10. UITableView实现格瓦拉飞天投票模块-b

    格瓦拉目前来说动画效果确实做的还比较好,虽然不是说很炫但做到精致,这次就模仿了它投票的模块.其实想到要实现它还是有很多方法,不过这次我还是采用了苹果自带控件UITableView简简单单来实现它,再次 ...