银联高校极客挑战赛 初赛 第一场 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 ...
随机推荐
- winform项目中开发的一套UI控件库
https://github.com/houyhea/winform-control-lib winform-control-lib 曾经在一个winform项目中开发的一套UI控件库 类图: 效果 ...
- JSP程序不能正常运行 MyEclipse10 Tomcat6.0
我写的sp程序,上午运行正常:但是下午再打开运行会提示对jsp解释失败 谁知道这是怎么回事呢? 后来是发现: 要运行JSP程序 Myeclipse10和Tomcat6的jdk都要调整到jdk1.7的版 ...
- vue --》组件的封装 及 参数的传递
vue组件的定义 ● 组件(Component)是Vue.js最强大的功能之一 ● 组件可以扩展HTML元素,封装可重用代码 ● 在较高层面上,组件是自定义元素,Vue.js的编译器为他添加特殊功能 ...
- Linked List Cycle(链表成环)
判断链表中是否有环 来源:https://leetcode.com/problems/linked-list-cycle Given a linked list, determine if it ha ...
- 使用NMAP端口扫描代码实现
Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting).其基本功能有三个,一是探测一 ...
- java学习day3运算符
一.算数运算符 1.对于除号“/”,它的整数除和小数除是有区别的:当整数除以整数的时候,会把结果的小数部分舍弃,只保留整数部分,例如: int x=3510; x=x/1000; 输出结果为x=3; ...
- HDU 6603 Azshara's deep sea(凸包+区间DP)
由于题目要求,首先维护出一个凸包,然后在凸包上寻找点对关系,用rel[i][j]表示i点和j点之间是否可以连线,又由于维护出来的凸包上的点的个数不多,可以直接枚举点对并枚举所有圆,判断两点直线和圆是否 ...
- RMQ 的入门 hdu1806
RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干次询问RMQ(i,j),返回数列A中下标在区间[i,j]中的最小/大值 ...
- CSS3制作的垂直口风琴1
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Linux环境下安装Django和Python
1 下载前准备操作:安装相关的依赖库(工具包) yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel ...