ACdream 1728 SJY's First Task
简单题。
先建树,我用邻接表来存了。然后对于每个叶子结点DFS一下,DFS深度超过了K就return,找到了叶子节点就记录下来,最后排个序,然后输出答案。
由于结点编号比较奇葩,所以用两个map来转换一下。这个代码写的很丑,大半夜写的,迷迷糊糊。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<string>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std; char s[];
map<int, int>zh;
map<int, int>ff;
vector<int>ljb[];
int flag[], rr[];
int ls, K, ye;
int u[], k[];
struct ANS
{
int A, B, C;
}ans[ + ];
int gh = ; bool cmp(const ANS&a, const ANS&b)
{
if (a.A == b.A&&a.B == b.B) return a.C<b.C;
if (a.A == b.A) return ff[a.B]<ff[b.B];
return ff[a.A]<ff[b.A];
}
void DFS(int now, int b)
{
if (b>K) return;
int i;
if (flag[now] == && now != ye)
{
ans[gh].A = ye;
ans[gh].B = now;
ans[gh].C = b;
gh++;
return;
}
for (i = ; i<ljb[now].size(); i++)
{
if (rr[ljb[now][i]] == )
{
rr[ljb[now][i]] = ;
DFS(ljb[now][i], b + );
}
} }
int main()
{
int n, i, j, o;
while (~scanf("%d", &K))
{
scanf("%d", &n);
zh.clear(); ff.clear();
memset(flag, , sizeof(flag));
int p = , tot; gh = ;
zh[] = p;
ff[p] = ;
p++;
for (i = ; i<; i++) ljb[i].clear();
for (o = ; o<n; o++)
{
scanf("%d %s", &k[o], s);
ls = ;
if (zh[k[o]] == ) zh[k[o]] = p, ff[p] = k[o], p++;
flag[zh[k[o]]] = ;
int len = strlen(s);
j = ; tot = ;
for (i = ; i <= len; i++)
{
if (s[i] == ',' || s[i] == '\0')
{
if (zh[ls] == ) zh[ls] = p,ff[p] = ls,p++;
u[tot] = zh[ls], tot++, ls = ;
}
else ls = ls * + s[i] - '';
}
ljb[].push_back(u[]);
ljb[u[]].push_back();
for (i = ; i<tot; i++)
{
ljb[u[i - ]].push_back(u[i]);
ljb[u[i]].push_back(u[i - ]);
}
ljb[u[tot - ]].push_back(zh[k[o]]);
ljb[zh[k[o]]].push_back(u[tot - ]);
}
for (i = ; i<n; i++)
{
ye = zh[k[i]];
memset(rr, , sizeof(rr));
rr[ye] = ;
DFS(ye, );
}
sort(ans, ans + gh, cmp);
for (i = ; i<gh; i++)
{
cout << ff[ans[i].A];
cout << " ";
cout << ff[ans[i].B];
cout << " ";
cout << ans[i].C;
cout << endl;
}
}
return ;
}
ACdream 1728 SJY's First Task的更多相关文章
- ACdream 1195 Sudoku Checker (数独)
Sudoku Checker Time Limit:1000MS Memory Limit:64000KB 64bit IO Format:%lld & %llu Submit ...
- Concepts:Request 和 Task
当SQL Server Engine 接收到Session发出的Request时,SQL Server OS将Request和Task绑定,并为Task分配一个Workder.在TSQL Query执 ...
- .Net多线程编程—任务Task
1 System.Threading.Tasks.Task简介 一个Task表示一个异步操作,Task的创建和执行是独立的. 只读属性: 返回值 名称 说明 object AsyncState 表示在 ...
- nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...
- windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分 ...
- Openstack Periodic Task
Openstack Periodic Task 周期性任务在各个模块的manager.py(computer,scheduler,cell,network)中添加. 添加方法:在模块manager类实 ...
- MapReduce剖析笔记之三:Job的Map/Reduce Task初始化
上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ...
- [Java定时器]用Spring Task实现一个简单的定时器.
今天做一个项目的的时候需要用到定时器功能.具体需求是: 每个月一号触发一次某个类中的方法去拉取别人的接口获取上一个月份车险过期的用户.如若转载请附上原文链接:http://www.cnblogs.co ...
- 定时管理器框架-Task.MainForm
入住博客园4年多了,一直都是看别人的博客,学习别人的知识,为各个默默无私贡献自己技术总结的朋友们顶一个:这几天突然觉得是时候加入该队列中,贡献出自己微弱的力量,努力做到每个月有不同学习总结,知识学习的 ...
随机推荐
- Python_day1 基础语法
1.基础语法变量: 在左侧自定义输入变量名,右侧可以输入任意类型赋值给左侧,如需制定类型,可以强转name = Jason, age = int(24) provience = ['beijing', ...
- div、span
1.Html区块元素 HTML可以通过<div>和<span>将元素组合起来 大多数HTML元素被定义为块级元素或内联元素, 而块级元素在浏览器显示时,通常会以新行来开始(或结 ...
- .net在网页中生成二维码和条形码
二维码: 1.下载ThoughtWorks.QRCode.dll文件 2.创建Web项目,添加引用刚才下载的文件 3.在项目中添加aspx窗体,编写代码如下 <%@ Page Language= ...
- 正则表达式之 match , findall, sub,subn
#正则表达式之 match以及分组 import re #无分组 origin = "hello alex bcd alex lge alex avd 19" r = re.mat ...
- BZOJ 1303 【CQOI2009】中位数图
baidu了一下bzoj水题列表...找到这道题. 题目大意:给定一个数t,在给定的一段包含1-n的序列中找出多少个长度为奇数子序列的中位数为t. 第一眼没看数据范围,于是开心的打了一个O(n^3 ...
- QWebView 播放网络视频
最近想看某站的VIP视频,但是网络上的软件用着都不怎么习惯,还有些要收费(收费还不如买VIP了..),所以自己研究做个网络播放器,使用的是QWebView. 1.设置WebView ui->we ...
- The Clocks
The Clocks 题目链接:http://poj.org/problem?id=1166 题意:给出9个时钟的初始状态,问最少通过几次操作,能使每个时钟指向12点(每次操作都会使对应时钟顺时针旋转 ...
- 主题模型 利用gibbslda做数据集主题抽样
电子科技大学电子商务实验室Kai Yip,欢迎同行指正,也欢迎互相指导,学习. 广告打完,进入正题. 关于程序运行结果的分析请参照我的另一篇博客:http://www.cnblogs.com/nlp- ...
- js的严格模式
严格模式: 严格模式这下的主要区别如下: 严格模式下的好处:
- git 克隆到本地linux目录的2种方式
登录到gitlab查看2种不同的地址 ssh 类型 地址 git@inc.xxxx:shiwf/xxxAdmin.git http类型 地址 http://inc.xxxx:8000/shiwf/xx ...