博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 1016 JSOI2008 最小生成树计数
阅读量:7008 次
发布时间:2019-06-28

本文共 1840 字,大约阅读时间需要 6 分钟。

    我都不忍心吐槽了。

    这么水的暴力我一开始竟然想写链剖!!!

    对于某个权值,相同的边不会超过10条。于是,暴力,然后乘起来。

    注意特判!特判!图不连通的时候输出0。

    我的程序在不联通的时候会输出奇怪的数字……要崩溃了……

    上代码:

#include 
#include
#include
#include
#include
#include
#define N 111#define M 1011#define yu 31011#define inf 0x7f7f7f7fusing namespace std;struct sss{ int x, y; int val;}bian[M];int n, m;int fa[N];int use[M] = { 0}, same[15], samenum = 0;long long ans = 1, minval;bool cmp(sss x, sss y) { return x.val < y.val; }int find(int x){ if (fa[x] == x) return x; fa[x] = find(fa[x]); return fa[x];}long long kru(){ long long nowval = 0; int nowc = n; for (int i = 1; i <= n; ++i) fa[i] = i; for (int i = 1; i <= m; ++i) { int x = find(bian[i].x); int y = find(bian[i].y); if (use[i] == 1 && x == y) return 0; // use[i] == 1 用 2 不用 if (use[i] == 2) continue; if (x != y) { fa[x] = y; nowval += bian[i].val; nowc --; } } if (nowc != 1) return 0; else return nowval;}int main(){ scanf("%d%d", &n, &m); for (int i = 1; i <= m; ++i) scanf("%d%d%d", &bian[i].x, &bian[i].y, &bian[i].val); sort(bian+1, bian+1+m, cmp); bian[0].val = -inf; bian[m+1].val = -inf; minval = kru(); if (minval == 0) { printf("0\n"); return 0; } for (int w = 1; w <= m; ++w) { samenum = 0; if (bian[w].val != bian[w+1].val) continue; same[++samenum] = w++; while (bian[w].val == bian[w-1].val) {same[++samenum] = w++;} w--; int zans = 0; int cou = (1 << samenum)-1; for (int i = 0; i <= cou; ++i) { int j = i, thisb = 1; for (int k = 1; k <= samenum; ++k) use[same[k]] = 2; while (j){ if (j & 1) use[same[thisb]] = 1;j >>= 1; thisb++;} if (kru() == minval) zans++; } for (int i = 1; i <= samenum; ++i) use[same[i]] = 0; ans *= (zans%yu); ans %= yu; } printf("%lld\n", ans%yu); return 0;}

 

转载于:https://www.cnblogs.com/handsomeJian/p/4034382.html

你可能感兴趣的文章
Ubuntu下安装Python的Tkinter和Pmw库
查看>>
安装Nginx+Lua开发环境
查看>>
nginx nginx.pid无故文件丢失,日志无法正常轮转
查看>>
我的友情链接
查看>>
XML中元素VS属性
查看>>
wepy - 小程序快速开发框架
查看>>
nodejs找不到express命令
查看>>
ubuntu13.04通过lxc搭建容器java运行环境
查看>>
RHCE官方培训笔记---分享
查看>>
top命令是Linux下常用的性能分析
查看>>
使用memcached缓存tomcat7会话信息
查看>>
Fatal Python error: pycurl: libcurl link-time version is older than compile-time version
查看>>
CentOS7:搭建SVN + Apache 服务器
查看>>
想要成为一个合格的软件架构师必须知道的事情
查看>>
cachestat、cachetop、pcstat-linux系统缓存命中率分析工具
查看>>
我的友情链接
查看>>
GET & POST
查看>>
z-index 属性
查看>>
什么是Neo4j
查看>>
为了dede系统安全把data目录迁移到web以外目录
查看>>