树的性质——cf1244D
2024-09-06 06:17:00
特别简单,只有链的形式才符合要求,那么枚举前两个点的颜色搞一下就可以
#include <bits/stdc++.h>
using namespace std;
int a[][],pos[],ok=,f[];
int o[];
vector<int> h[];
set<int> s[];
set<int>::iterator it;
long long d[][];
void dfs(int u,int fa)
{
f[u]=fa;
if(ok==-) return ;
if(h[u].size()>)
{
ok=-;
return ;
}
int k=;
for(int i=; i<h[u].size(); i++)
{
int v=h[u][i];
if(v==fa) continue;
k++;
while(pos[f[u]]==k||k==pos[u]) k++;
pos[v]=k;
s[k].insert(v);
dfs(v,u);
}
}
int main()
{
int n,i,j,x,y;
scanf("%d",&n);
for(i=; i<=; i++)
for(j=; j<=n; j++) scanf("%d",&a[i][j]);
for(i=; i<n; i++)
{
scanf("%d%d",&x,&y);
h[x].push_back(y);
h[y].push_back(x);
}
s[].insert();
pos[]=;
dfs(,);
if(ok==-) return puts("-1"),;
for(i=; i<=; i++)
for(it=s[i].begin(); it!=s[i].end(); it++)
{
d[i][]+=a[][*it];
d[i][]+=a[][*it];
d[i][]+=a[][*it];
}
long long mmin;
mmin=d[][]+d[][]+d[][];
mmin=min(mmin,d[][]+d[][]+d[][]);
mmin=min(mmin,d[][]+d[][]+d[][]);
mmin=min(mmin,d[][]+d[][]+d[][]);
mmin=min(mmin,d[][]+d[][]+d[][]);
mmin=min(mmin,d[][]+d[][]+d[][]);
printf("%lld\n",mmin);
if(mmin==d[][]+d[][]+d[][]) o[]=,o[]=,o[]=;
else if(mmin==d[][]+d[][]+d[][]) o[]=,o[]=,o[]=;
else if(mmin==d[][]+d[][]+d[][]) o[]=,o[]=,o[]=;
else if(mmin==d[][]+d[][]+d[][]) o[]=,o[]=,o[]=;
else if(mmin==d[][]+d[][]+d[][]) o[]=,o[]=,o[]=;
else if(mmin==d[][]+d[][]+d[][]) o[]=,o[]=,o[]=;
for(i=;i<=n;i++) printf("%d ",o[pos[i]]);
return ;
}
最新文章
- Spring MVC学习笔记——完整的用户登录
- Chrome浏览器设置默认编码
- jquery 双击修改某项值
- CRM客户关系管理系统 ——客户联系人添加(十五)
- Java System.out的输出缓冲
- Mysql笔记——触发器简单实例
- linux 下 select 编程
- tessilstrona
- Java的优先级
- Could not load type System.ServiceModel.Activation.HttpModule解决办法
- 【C#多线程编程实战笔记】一、 线程基础
- 高性能 Java 缓存库 — Caffeine
- 进程中调用CreateMutex
- linux系统环境与文件权限
- linux 部署mysql
- nodejs操作session和cookie
- Linux 系统负载查询及分析说明
- websocket实现简单的通信
- Android RecyclerView 瀑布流滑动到最后自动加载更多
- C# 连接池开发,多连接高效应用开发,多连接自动维护管理。