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年多了,一直都是看别人的博客,学习别人的知识,为各个默默无私贡献自己技术总结的朋友们顶一个:这几天突然觉得是时候加入该队列中,贡献出自己微弱的力量,努力做到每个月有不同学习总结,知识学习的 ...
随机推荐
- angularjs 路由回退,返回到上一个路由
在现阶段比较流行的angularjs框架中:路由是一个比较重要的应用:angularjs的单页面是其强大功能之一: 所有的页面其实就只是在一个页面就实现的:angularjs通过对路由的控制来进行页面 ...
- nodejs,http,get,post,请求
本文源于实践及其部分网络搜索: 其实大部分,官方都有介绍... 官方参考链接:https://nodejs.org/api/http.html var http = require('http'); ...
- Docker集群实验环境布署--swarm【5 容器启动组件--node】
10.40.100.143 docker-node0.venic.com 10.40.100.144 docker-node1.venic.com 原用swarm镜像 直接启动 1 ...
- 国内下载比较快的Maven仓库镜像
#收集的比较快的maven仓库 http://maven.wso2.org/nexus/content/groups/public/ http://jcenter.bintray.com/http:/ ...
- Git安装使用
转载:http://www.open-open.com/lib/view/open1414396787325.html 1.window版地址 https://git-for-windows.gith ...
- Logstash安装搭建(一)
Logstash是一个具有实时管道的开源数据收集引擎.可以动态地统一不同来源的数据,并将数据归到不同目的地.也是一个管理事件和日志工具.你可以用它来收集日志,分析它们,并将它们储存起来以供以后使用. ...
- Chapter 21_5 替换
gsub函数的第三个参数不仅是一个字符串,还可以是一个函数或table. 如果是函数,gsub会在每次找到匹配时调用该函数.调用时的参数是捕获到的内容,该函数的返回值作为要替换的字符串. 如果是tab ...
- CentOS单独编译安装PHP gd库扩展
注意:如果您已经编译安装过GD库,请重新编译安装php不带gd库成功后,执行以下操作 安装libpng wget http://jaist.dl.sourceforge.net/project/lib ...
- metasploit nessus & db_autopwn
nessus官网:https://www.tenable.com/products/nessus-vulnerability-scanner 下载地址:https://www.tenable.com/ ...
- rocketmq(1)
参考: 开源社区:https://github.com/alibaba/RocketMQ rocketmq入门: http://www.cnblogs.com/LifeOnCode/p/4805953 ...