说起来都是泪啊

T3的bfs一直不对,我想死。

考试时候苟了两个小时,死活找不到错误(因为lca和离散化都码出来了,太乱)

最后把bfs单独提出来,发现在bfs里面输出的f[ly][0]都是正确的,到外面就彻底崩掉,全是0。

又调了一节课,终于发现

数组越界了。。。

错误代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<queue>
#define rint register int
using namespace std;
int n,m,a,b,tot,first[100005];
int deep[100005],f[100005][18];
struct node{
	int u,v,nxt;
}edge[100005];
inline void add(int u,int v)
{
	++tot;
	edge[tot].u=u;
	edge[tot].v=v;
	edge[tot].nxt=first[u];
	first[u]=tot;
}
inline void bfss()
{
	queue <int> q;
	deep[1]=1;
	q.push(1);
	while(!q.empty())
	{
		int lq=q.front();q.pop();
		for(rint i=first[lq];i;i=edge[i].nxt)
		{
			int ly=edge[i].v;
			if(ly==0)continue;
			if(deep[ly])continue;
			deep[ly]=deep[lq]+1;
			f[ly][0]=lq;
			cout<<ly<<":fa:"<<f[ly][0]<<endl;
//			cout<<f[20][0]<<endl;
			for(rint j=1;j<=18;++j)
			{
				f[ly][j]=f[f[ly][j-1]][j-1];
				printf("f[%d][%d]=%d\n",ly,j,f[ly][j]);
			}
			q.push(ly);
		}
	}
	return ;
}
int main()
{
	scanf("%d %d",&n,&m);
	for(rint i=1;i<n;++i)
	{
		scanf("%d %d",&a,&b);
		add(a,b);add(b,a);
	}
	bfss();
	cout<<f[20][0]<<endl;
}

正确代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<queue>
#define rint register int
using namespace std;
int n,m,a,b,tot,first[100005];
int deep[100005],f[100005][18];
struct node{
	int u,v,nxt;
}edge[100005];
inline void add(int u,int v)
{
	++tot;
	edge[tot].u=u;
	edge[tot].v=v;
	edge[tot].nxt=first[u];
	first[u]=tot;
}
inline void bfss()
{
	queue <int> q;
	deep[1]=1;
	q.push(1);
	while(!q.empty())
	{
		int lq=q.front();q.pop();
		for(rint i=first[lq];i;i=edge[i].nxt)
		{
			int ly=edge[i].v;
			if(ly==0)continue;
			if(deep[ly])continue;
			deep[ly]=deep[lq]+1;
			f[ly][0]=lq;
			cout<<ly<<":fa:"<<f[ly][0]<<endl;
//			cout<<f[20][0]<<endl;
			for(rint j=1;j<=17;++j)
			{
				f[ly][j]=f[f[ly][j-1]][j-1];
				printf("f[%d][%d]=%d\n",ly,j,f[ly][j]);
			}
			q.push(ly);
		}
	}
	return ;
}
int main()
{
	scanf("%d %d",&n,&m);
	for(rint i=1;i<n;++i)
	{
		scanf("%d %d",&a,&b);
		add(a,b);add(b,a);
	}
	bfss();
	cout<<f[20][0]<<endl;
}

我想去死怎么办。。。

日常:论我的T3是如何苟掉的的更多相关文章

  1. NOI前训练日记

    向别人学习一波,记点流水帐.17.5.29开坑. 5.29 早晨看了道据说是树状数组优化DP的题(hdu5542),然后脑补了一个复杂度500^3的meet in the middle.然后死T... ...

  2. 雅礼集训1-9day爆零记

    雅礼集训1-9day爆零记 先膜一下虐爆我的JEFF巨佬 Day0 我也不知道我要去干嘛,就不想搞文化科 (文化太辣鸡了.jpg) 听李总说可以去看(羡慕)各路大佬谈笑风声,我就报一个名吧,没想到还真 ...

  3. Glide Golang包管理

    Golang的包管理乱得不行,各种工具横空出世,各显神通啊.用了几个下来,发现 Glide 是比较好用的,使用了 vender 来进行管理,多个开发环境的版本不冲突,功能强大,配置文件也足够简单. 初 ...

  4. FJOI2019全记录(福建省选)

    Day 0 最后一个早上,早读完后就到机房里,复习了左偏树和计算几何,然后真的不知道还要做什么了(FFT和一些数论的结论昨天复习过了 也许还要去学一点新东西(?),像Krusk重构树什么的.(一直没有 ...

  5. iPhone换电池是原装电池好还是换第三方大容量电池好?

    转:https://www.xianjichina.com/news/details_60791.html 最近这段时间苹果降速门事件持续发酵,闹得满城风雨.尽管苹果公司两次致歉,很多果粉都去更换电池 ...

  6. Google工作法

    本文转自:https://www.yuque.com/heqingbao/msfy2c/zg56gm 这几天去上海参加Google开发者大会,利用空闲时间读了一本快餐书,书名叫<Google工作 ...

  7. 0927CSP-S模拟测试赛后总结

    84pts rank28 经历了一个阶段的持续低迷,终于回到自己之前的位置了啊. 尽管依旧不是太靠上,但是还是证明了我的努力. 宿舍三人的风水轮流转之谈终究只是戏言和巧合.嘟嘟和Lockey都进第一机 ...

  8. [Go疑难杂症]为什么nil不等于nil

    现象 在日常开发中,可能一不小心就会掉进 Go 语言的某些陷阱里,而本文要介绍的 nil ≠ nil 问题,便是其中一个,初看起来会让人觉得很诡异,摸不着头脑. 先来看个例子: type Custom ...

  9. [日常] NOIWC 2018爆零记

    开个坑慢慢更(逃 (然而没准会坑掉?) day 0 大概 $8:30$ 就滚去雅礼了qwq 过去的时候发现并没有人...进报到处楼门的时候还被强行拍照围观了一波OwO 然后就领了HZ所有人的提包和狗牌 ...

随机推荐

  1. 13_android实现多线程下载_界面实现

    进度条这个东西可以给它创建一个布局.进度条叫ProgressBar. ProgressBar这个就是进度条. 默认的安卓进度条是一个圈圈,一圈一圈转. 之前咱们把一个XML文件转化成一个View对象, ...

  2. centos查看CPU的数量

    # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cpuinfo| ...

  3. 041--Jquery

    一.Jquery对象 jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用 jQuer ...

  4. 分析自己遇到的Excel导出报NullpointException问题

    此文已由作者叶富宏授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 昨天一个商务反馈说报价信息导出失败,查看了一下日志发现是导出记录到Excel的时候报了NullpointEx ...

  5. liteos 中断机制(四)

    1. 概述 中断是指出现需要时, CPU暂停执行当前程序,转而执行新程序的过程.即在程序运行过程中,系统出现了一个必须由CPU立即处理的事务,此时, CPU暂时中止当前程序的执行转而处理这个事务,这个 ...

  6. Docker容器日志管理最佳实践

    目录 一 .Docker 引擎日志 二.容器日志 2.1.常用查看日志命令--docker logs 2.2 .Docker 日志 驱动 三. 生产环境中该如何储存容器中的日志 一.当是完全是标准输出 ...

  7. E20180404-hm

    reject vt. 拒绝; 排斥; 抛弃,扔掉; 吐出或呕吐; conditioner  n. 调节器,调节装置 fabric n. 织物; 布; 构造; (建筑物的) 结构(如墙.地面.屋顶):质 ...

  8. 注册CSDN账号的尴尬

    因为新浪博客这里代码显示不大好用,打算把关于编程和应用开发的东西改到那里去写,可是点击注册....   竟然要输入手机号,无法跳过.... 要知道,楼主现在可是在国外,压根没有可用于注册的手机号啊.. ...

  9. kibana 操作

    插入时不指明id,不会自动生成id,和视频中的不一样啊 解决: 其实是可以的,不过put不可以 POST才可以 中文输入有问题: 待解决: 基本操作记录 GET _search { "que ...

  10. 安装 synaptic on ubuntu 18

    apt的图形化界面管理 sudo apt install synaptic 安装后使用需要注意的是 如果打开了synaptic,终端中apt命令某些是没法正常用的,比如说apt remove,应该是锁 ...