银联高校极客挑战赛 初赛 第一场 B
试图写非递归求解,然后TLE了一下午==,全程找不到bug,换成递归,一发AC
判断环写得很丑==
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define P pair<int,int> vector<P> G[];
bool vis[];
int n;
int fa[];
int x[];
bool s[];
bool fx[];
int in=-;
int T=;
int a;
bool dfs(int x)
{
T++;
// if(vis[x])return false;
//if(++T>100000)puts(0);
for(int i=; i<G[x].size(); i++)
{
a=G[x][i].first;
//if(G[a].size()==1)continue;
if((a!=fa[x])&&(!vis[a]))
{
fa[a]=x;
vis[a]=;
if(dfs(a))
{
return true;
}
}
else if((a!=fa[x])&&vis[a])
{
fa[a]=x;
in=a;
return true;
}
}
return false;
}
void solve(int k)
{
fx[k]=;
int n=G[k].size();
for(int i=;i<n;i++){
int a=G[k][i].first;
int b=G[k][i].second;
x[a]=b-x[k]; if(!fx[a])
solve(a);
}
}
int main()
{
scanf("%d",&n);
int a,b,c;
int R=;
for(int i=; i<n; i++)
{
scanf("%d%d%d",&a,&b,&c);
G[a].push_back(P(b,c));
G[b].push_back(P(a,c));
if(G[a].size()>G[R].size())R=a;
if(G[b].size()>G[R].size())R=b;
}
vis[R]=;
dfs(R); int t=in;
int g=,dd=;
int ans=; while((!dd)||t!=in)
{
dd=; for(int i=; i<G[t].size(); i++)
{
if(G[t][i].first==fa[t])
{
ans+=g*G[t][i].second;
g*=-;
t=fa[t];
break;
} }
}
x[in]=ans/;
fx[in]=;
solve(in); /*while(true)
{ /*if(T+10>=100000){
puts(0);
}
bool wa=0;
/*for(int i=1; i<=n; i++)
{
if(!fx[i])
{
wa=1;
break;
}
}
if(!wa)break;
if(t==-1)
{
for(int i=1; i<=n; i++)
{
if(fx[i]&&!(s[i]))
{
t=i;
break;
}
}
if(t==-1)break;
}
k=t;
t=-1;
for(int i=0; i<G[k].size(); i++)
{
int l=G[k][i].first;
int r=G[k][i].second;
x[l]=r-x[k];
fx[l]=1;
if(!s[l]&&t==-1)t=l;
}
s[k]=1; }
*/
for(int i=; i<=n; i++)
{
cout<<x[i]<<'\n';
} }
银联高校极客挑战赛 初赛 第一场 B的更多相关文章
- 银联高校极客挑战赛第一场 A.码队女朋友的王者之路[水题]
目录 题目地址 题干 代码和解释 题目地址 计蒜客回顾比赛 码队女朋友的王者之路 题干 代码和解释 本题难度不大,但是一开始没有读懂题,以为净胜场次是确定的,没有"最高净胜场次"的 ...
- MegCup 2017 极客挑战赛 初赛试题
看着像八卦,数数不是八卦,是29卦 每卦又有29个小弧 所以是29×29个bit 这29×29个bit怎么理解呢?并且从哪一卦开始到哪一卦结束?是先环向层层向里走还是先径向逐卦走? 我想不出来. 我猜 ...
- # 「银联初赛第一场」自学图论的码队弟弟(dfs找环+巧解n个二元一次方程)
「银联初赛第一场」自学图论的码队弟弟(dfs找环+巧解n个二元一次方程) 题链 题意:n条边n个节点的连通图,边权为两个节点的权值之和,没有「自环」或「重边」,给出的图中有且只有一个包括奇数个结点的环 ...
- 2019牛客多校第一场 I Points Division(动态规划+线段树)
2019牛客多校第一场 I Points Division(动态规划+线段树) 传送门:https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点有 ...
- 牛客多校第一场 B Inergratiion
牛客多校第一场 B Inergratiion 传送门:https://ac.nowcoder.com/acm/contest/881/B 题意: 给你一个 [求值为多少 题解: 根据线代的知识 我们可 ...
- 2019年牛客多校第一场B题Integration 数学
2019年牛客多校第一场B题 Integration 题意 给出一个公式,求值 思路 明显的化简公式题,公式是分母连乘形式,这个时候要想到拆分,那如何拆分母呢,自然是裂项,此时有很多项裂项,我们不妨从 ...
- 2019年全国高校计算机能力挑战赛初赛C语言解答
http://www.ncccu.org.cn 2019年全国高校计算机能力挑战赛分设大数据算法赛,人工智能算法赛,Office高级应用赛,程序设计赛4大赛项 C语言初赛解答 1:编程1 16.现有一 ...
- 计蒜之道 初赛第一场B 阿里天池的新任务(简单)
阿里“天池”竞赛平台近日推出了一个新的挑战任务:对于给定的一串 DNA 碱基序列 tt,判断它在另一个根据规则生成的 DNA 碱基序列 ss 中出现了多少次. 首先,定义一个序列 ww: \displ ...
- 牛客多校第一场 A Equivalent Prefixes 单调栈(笛卡尔树)
Equivalent Prefixes 单调栈(笛卡尔树) 题意: 给出两个数组u,v,每个数组都有n个不同的元素,RMQ(u,l,r)表示u数组中[l,r]区间里面的最小值标号是多少,求一个最大的m ...
随机推荐
- C#7.0新特性和语法糖详解
转自IT之家网--DotNet码农:https://www.ithome.com/html/win10/305148.htm 伴随Visual Studio 2017的发布,C#7.0开始正式走上工作 ...
- 应用安全-安全设备-Waf系列-软Waf-云锁
安装 安装 - Linux 前提:检查selinux状态 - 关闭selinux getenforce #显示为disabled则为关闭 .下载 x86:wget http://download.yu ...
- java 获取某路径下的子文件/子路径
/** * 获取某路径下的子文件 * */ public static List<String> getSubFile(String path){ List<String> s ...
- python之下载每日必应壁纸
#!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'jiangwenwen' from bs4 import BeautifulS ...
- [2019杭电多校第三场][hdu6608]Fansblog
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6608 大致题意是比p小的最大素数q,求q!%p的值. 由威尔逊定理开始推: $(p-1)!\equiv ...
- Appscan工作原理详解
AppScan,即 AppScan standard edition.其安装在 Windows 操作系统上,可以对网站等 Web 应用进行自动化的应用安全扫描和测试. Rational AppScan ...
- python小感悟(初学者)
计算机语言的起源: 在计算机刚发明出来的时候,是一大堆的机械硬件,然后技术人员开发了操作系统,操作系统是最底层的软件,负责与硬件沟通,执行其他软件的命令.由于计算机只能识别0和1两种特殊的机器语言,所 ...
- 构建CRD工程 - 程序员学点xx 43 k8s
目录 Kubernetes -3- 这是yann的第98篇分享 本日状态: 帮同事排了一天bug. Kubernetes -3- 这是yann的第98篇分享 第 1 部分 承前 昨天用视屏的方式演 ...
- WinForm的RadioButton使用小技巧
http://www.cnblogs.com/sjrhero/articles/1883155.html 当多个RadioButton同在一个容器里面的时候,多半的操作都是要得到其中一个的值这个时候我 ...
- linux学习笔记(1):
一.Linux系统简介 1.什么是linux Linux是一个免费的.多用户.多任务的操作系统,其运行方式.功能和UNIX系统很相似,但Linux系统的稳定性.安全性与网络功能是许多商业操作系统所无法 ...