BZOJ 3332
题解:给边赋上权值,然后求最大生成树,如果不符合那就无解
证明:留坑
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxN=;
const int maxM=;
const int oo=; int TT;
int n,m;
int f[maxN][maxN];
struct Edge{
int u,v,ed;
}edges[maxM];
bool mycmp(const Edge &E1,const Edge &E2){
return E1.ed>E2.ed;
} int father[maxN];
int Getf(int x){
if(father[x]==x)return x;
return father[x]=Getf(father[x]);
}
void Unionn(int x,int y){
int fx=Getf(x);
int fy=Getf(y);
if(fx!=fy){
father[fx]=fy;
}
} int cntedge=;
int head[maxN]={};
int to[maxN<<],nex[maxN<<],dist[maxN<<];
void Addedge(int x,int y,int z){
nex[++cntedge]=head[x];
to[cntedge]=y;
dist[cntedge]=z;
head[x]=cntedge;
} int fdist[maxN];
void Dfs(int x,int fa){
for(int i=head[x];i;i=nex[i]){
if(to[i]==fa)continue;
fdist[to[i]]=min(fdist[x],dist[i]);
Dfs(to[i],x);
}
} void Myinit(){
cntedge=;
memset(head,,sizeof(head));
}
int rd(){
int r=,k=;
char c=getchar();
for(;c<''||c>'';c=getchar())if(c=='-')k=-;
for(;c>=''&&c<='';c=getchar())r=r*+c-'';
return r*k;
} int main(){
scanf("%d",&TT);
for(int t=;t<=TT;++t){
Myinit();
scanf("%d%d",&n,&m);
for(int i=;i<=m;++i)scanf("%d%d",&edges[i].u,&edges[i].v);
for(int i=;i<=n;++i){
for(int j=;j<=n;++j){
scanf("%d",&f[i][j]);
}
}
for(int i=;i<=m;++i){
int u=edges[i].u;
int v=edges[i].v;
edges[i].ed=f[u][v];
}
sort(edges+,edges++m,mycmp);
for(int i=;i<=n;++i)father[i]=i;
for(int i=;i<=m;++i){
int u=edges[i].u,v=edges[i].v,z=edges[i].ed;
if(Getf(u)==Getf(v))continue;
Unionn(u,v);
Addedge(u,v,z);
Addedge(v,u,z);
}
int fla=;
for(int u=;u<=n;++u){
fdist[u]=oo;
Dfs(u,);
for(int v=;v<=n;++v){
if(u==v)continue;
if(Getf(u)!=Getf(v)){
if(f[u][v]!=-){
fla=;break;
}
}else{
if(f[u][v]!=fdist[v]){
fla=;break;
}
}
}
if(!fla)break;
}
if(fla)printf("Case #%d: Yes\n",t);
else printf("Case #%d: No\n",t);
}
return ;
}
BZOJ 3332的更多相关文章
- [BZOJ 3332]旧试题
Description 圣诞节将至.一年一度的难题又摆在wyx面前——如何给妹纸送礼物. wyx的后宫有n人,这n人之间有着复杂的关系网,相互认识的人有m对.wyx想要量化后宫之间的亲密度,于是准备给 ...
- [BZOJ 3110] [luogu 3332] [ZJOI 2013]k大数查询(权值线段树套线段树)
[BZOJ 3110] [luogu 3332] [ZJOI 2013]k大数查询(权值线段树套线段树) 题面 原题面有点歧义,不过从样例可以看出来真正的意思 有n个位置,每个位置可以看做一个集合. ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
- 【sdoi2013】森林 BZOJ 3123
Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...
- 【清华集训】楼房重建 BZOJ 2957
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...
随机推荐
- windows下pycharm连接vagrant的python环境
- DateTime.Now.ToFileTime
var s = System.DateTime.Now.ToFileTime().ToString(); DateTime.Now.ToFileTime() 可以获得当前时间的长整型数字,这个数字应该 ...
- Html转图片 -- wkhtmltox
关于wkhtmltox,是一个可以把HTML转换为图片和pdf的工具. 不多介绍了,详见官网 https://wkhtmltopdf.org/ PHP 扩展 https://github.com/kr ...
- Django的urls(路由)
目录 Django的urls(路由) 正则表达式详解 路由匹配(分组匹配) 无名分组 有名分组 反向解析 无名分组反向解析 有名分组反向解析 路由分发 名称空间 虚拟环境 伪静态 Django的url ...
- Intellij Idea webstorm 激活
参考: 最新破解 https://www.cnblogs.com/litterCoder/p/12175461.html 推荐 https://mp.weixin.qq.com/s/zxfDAlN8G ...
- java并发:初探sleep方法
sleep与wait sleep是Thread方法,使得当前线程从运行态变为阻塞态.但它不会释放对象的锁. wait方法是Object方法,它的作用是使得当前拥有对象锁的线程从运行态变为阻塞态, 它会 ...
- 【转】stm32 IAP升级程序
一.什么是IAP,为什么要IAP IAP即为In Application Programming(在应用中编程),一般情况下,以STM32F10x系列芯片为主控制器的设备在出厂时就已经 ...
- jenkins 2.204.2 安装, 使用国内源安装, 并且跳过插件界面, 更新成国内插件源.
需要java环境支持,自行百度. jenkins 安装源在国外, 下载会比较慢, 尤其在linux下, 使用yum或者apt install jenkins方式安装时,经常会下载失败. 由于yum或者 ...
- 「Luogu1402」酒店之王
传送门 Luogu 解题思路 网络流板子题. 建图细节见代码,也可以参考这道差不多的题 细节注意事项 咕咕咕. 参考代码 #include <algorithm> #include < ...
- 「PA2014」Fiolki
传送门 Bzoj 解题思路 构造法. 对于每一次的倾倒操作,连边 \(newnode\to u,newnode\to v\). 最后所有的反应都会在构造出来的树上的对应两点的 \(\text{LCA} ...