题解:给边赋上权值,然后求最大生成树,如果不符合那就无解

证明:留坑

#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的更多相关文章

  1. [BZOJ 3332]旧试题

    Description 圣诞节将至.一年一度的难题又摆在wyx面前——如何给妹纸送礼物. wyx的后宫有n人,这n人之间有着复杂的关系网,相互认识的人有m对.wyx想要量化后宫之间的亲密度,于是准备给 ...

  2. [BZOJ 3110] [luogu 3332] [ZJOI 2013]k大数查询(权值线段树套线段树)

    [BZOJ 3110] [luogu 3332] [ZJOI 2013]k大数查询(权值线段树套线段树) 题面 原题面有点歧义,不过从样例可以看出来真正的意思 有n个位置,每个位置可以看做一个集合. ...

  3. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  4. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  5. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

  6. bzoj 4610 Ceiling Functi

    bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...

  7. BZOJ 题目整理

    bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...

  8. 【sdoi2013】森林 BZOJ 3123

    Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...

  9. 【清华集训】楼房重建 BZOJ 2957

    Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...

随机推荐

  1. Py西游攻关之基础数据类型(六)-文件操作

    Py西游攻关之基础数据类型 - Yuan先生 https://www.cnblogs.com/yuanchenqi/articles/5782764.html 九 文件操作 9.1 对文件操作流程 打 ...

  2. Input输入框日期控件

    案例 https://pan.baidu.com/s/1i6BNLcT   密码:p77m

  3. 图形数据写入数据库,Filletream

    图形数据写入数据库 用FileStream对象读模式打开图形文件 Dim 文件对象 As New FileStream(图形文件名, FileMode.Open, FileAccess.Read) 定 ...

  4. Python学习笔记之基础篇(五)字典

    #数据类型划分:可变数据类型 不可变数据类型 #不可变数据类型 : 元组 bool int str --> 可哈希 #可变数据类型 list ,dict set --->不可哈希 ''' ...

  5. 原生JS获取所有标签的数量并统计每个标签的数量

    <script type="text/javascript"> var tags = document.getElementsByTagName('*'); var t ...

  6. Mybatis入门(四)配置别名(二)

    这一章我们练习一下Mybatis的别名,这大大的提高了我们的开发效率 类型别名(typeAliases) 类型别名是为 Java 类型设置一个短的名字. 它只和 XML 配置有关,作用在于用来减少类完 ...

  7. Maven项目- Servlet的抽取和优化 java.lang.NoSuchMethodException 的解决方法

    优化servlet,减少servlet的数量,便于开发与维护.现在是一个功能一个Servlet,将其优化为一个模块一个Servlet,BaseServlet的抽取和优化,相当于在数据库中一张表对应一个 ...

  8. os期末复习

    登记之后会发生两个变化:读者数增加(v操作).座位数减少(p操作) 注销之后会发生的变化:读者数减少(p操作).座位数增加(v操作) 必须要清楚释放的是甚麽,以及申请的是甚麽资源(在具体的题目当中) ...

  9. luogu P2761 软件补丁问题

    网络流(x) 状压(√) 初始状态为全1,合法状态为(state&b1)&(state|b1) == state && (state&b2)&(stat ...

  10. 081、Java数组之数组传递

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...