简单题。

先建树,我用邻接表来存了。然后对于每个叶子结点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的更多相关文章

  1. ACdream 1195 Sudoku Checker (数独)

    Sudoku Checker Time Limit:1000MS     Memory Limit:64000KB     64bit IO Format:%lld & %llu Submit ...

  2. Concepts:Request 和 Task

    当SQL Server Engine 接收到Session发出的Request时,SQL Server OS将Request和Task绑定,并为Task分配一个Workder.在TSQL Query执 ...

  3. .Net多线程编程—任务Task

    1 System.Threading.Tasks.Task简介 一个Task表示一个异步操作,Task的创建和执行是独立的. 只读属性: 返回值 名称 说明 object AsyncState 表示在 ...

  4. nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...

  5. windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分 ...

  6. Openstack Periodic Task

    Openstack Periodic Task 周期性任务在各个模块的manager.py(computer,scheduler,cell,network)中添加. 添加方法:在模块manager类实 ...

  7. MapReduce剖析笔记之三:Job的Map/Reduce Task初始化

    上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ...

  8. [Java定时器]用Spring Task实现一个简单的定时器.

    今天做一个项目的的时候需要用到定时器功能.具体需求是: 每个月一号触发一次某个类中的方法去拉取别人的接口获取上一个月份车险过期的用户.如若转载请附上原文链接:http://www.cnblogs.co ...

  9. 定时管理器框架-Task.MainForm

    入住博客园4年多了,一直都是看别人的博客,学习别人的知识,为各个默默无私贡献自己技术总结的朋友们顶一个:这几天突然觉得是时候加入该队列中,贡献出自己微弱的力量,努力做到每个月有不同学习总结,知识学习的 ...

随机推荐

  1. 办理多伦多大学(本科)学历认证『微信171922772』Toronto学位证成绩单使馆认证University of Toronto

    办理多伦多大学(本科)学历认证『微信171922772』Toronto学位证成绩单使馆认证University of Toronto Q.微信:171922772办理教育部国外学历学位认证海外大学毕业 ...

  2. hdu1042

    #include"stdio.h" #include"stdlib.h" #include"string.h" #define N 1000 ...

  3. hdu1037

    #include <iostream> #include <cstdio> using namespace std; int main() { int a,b,c; while ...

  4. 拿来之笔 希望铭记 笔记 出处 http://www.jianshu.com/p/acb8885283dc

    最近有机会对不同岗位的应聘者进行面试,其中有架构师.技术经理.开发岗位.谈谈几个印象深刻的. 面试者一,女性.重点大学硕士,从事软件技术工作十四年,应聘架构师岗位.按照套路问了下对于软件架构的认识和理 ...

  5. vimtutor基础教程

    第一讲: 1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键.         h (左移)       j (下行)       k (上行)     l (右移)  2. 欲 ...

  6. 《C++反汇编与逆向分析技术揭秘》——基本数据类型的表现形式

    ---恢复内容开始--- 基本的浮点数指令 示例代码: Visual Studio 2013的反汇编代码是: 对于movss,表示移动标量单精度浮点值 将标量单精度浮点值从源操作数(第二个操作数)移到 ...

  7. 工厂模式Assembly.Load(path).CreateInstance 反射出错解决办法

    项目结构: DALFactory 反射代码反射 //使用缓存 private static object CreateObject(string AssemblyPath,string classNa ...

  8. js作用域详解

    // 作用域:(1)域:空间.范围.区域……     (2) 作用:读.写 script 全局变量.全局函数 自上而下 函数 由里到外 浏览器: “JS解析器” 1)“找一些东西” :var func ...

  9. 深入学习sea.js

    入门学习了文档之后,在深入学习里面的一些有趣的知识点 =================================== 一.配置 seajs.config({ alias:( a3:'./js/ ...

  10. javascript variables 变量

    一,调试方法: 1.document.write();       直接在网页中显示. 2.alert();                       弹窗显示. 3.console.       ...