[vijos1427]机密信息

Description

有个很奇怪的习惯,他把他所有的机密信息都存放在一个叫机密盘的磁盘分区里,然而这个机密盘中却没有一个文件,那他是怎么存放信息呢?聪明的你一定想到了,的信息都是以文件夹名称的形式保存的。给机密盘中的每一个文件夹都编了号,而的机密信息是由文件夹转到文件夹的过程中必须经过的文件夹名称组合而成的(包括),由于的磁盘很慢,打开每个文件夹所耗费的时间等于该文件夹内下一级文件夹的数量。这次的任务是,给出每个文件夹的编号、名称以及它的父目录的编号和隐藏了机密信息的起始文件夹编号和终点文件夹编号,你要计算出来的是机密信息的长度以及寻找这个机密信息所需要的总时间。

Input

输入文件的第一行为个整数,分别代表文件夹的个数、起始文件夹编号、终点文件夹编号.

接下来行,每行有个整数个字符串(不包含空格),用空格分开,号文件夹的父目录编号(为时表示该文件夹为根目录下的一级文件夹),号文件夹的名称.

Output

输出文件共行,第一行是的机密信息的长度,第二行是所消耗的时间.

Sample Input

6 1 5
1 2 Lo
2 3 ra
3 0 .
4 3 bi
5 4 t
6 5 .COM

Sample Output

8
4

HINT

,保证一定有解.

假设你一开始就在初始文件夹位置,此时耗费的时间为0;你每打开一个文件夹,能够知道的文件夹名除了当前这个文件夹名之外,还有该文件夹内下一级的文件夹名.

Solution

这道题就是裸的...

只是有以下细节需要注意:

对于,不需要算的打开时间;有可能在一条链上.

#include<cmath>
#include<ctime>
#include<queue>
#include<stack>
#include<cstdio>
#include<vector>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define K 15
#define M 305
#define N 10005
using namespace std;
struct graph{
    int nxt,to;
}e[N];
int f[N][K],g[N],l[N],fa[N],dep[N],chl[N],n,s,t,len,tim,cnt;
char c[M];stack<int> sta;
inline void addedge(int x,int y){
    e[++cnt].nxt=g[x];g[x]=cnt;e[cnt].to=y;
}
inline void dfs(int r){
    int u;dep[r]=1;sta.push(r);
    for(int i=0;i<K;++i)
        f[r][i]=r;
    while(!sta.empty()){
        u=sta.top();sta.pop();
        if(u!=r) for(int i=1;i<K;++i)
            f[u][i]=f[f[u][i-1]][i-1];
        for(int i=g[u];i;i=e[i].nxt){
            f[e[i].to][0]=u;
            sta.push(e[i].to);
            dep[e[i].to]=dep[u]+1;
        }
    }
}
inline int swim(int x,int h){
    for(int i=0;h;i++,h>>=1)
        if(h&1) x=f[x][i];
    return x;
}
inline int lca(int x,int y){
    if(dep[x]<dep[y]){
        int tem=x;x=y;y=tem;
    }
    x=swim(x,dep[x]-dep[y]);
    if(x==y) return x;
    int i;
    while(true){
        for(i=0;f[x][i]!=f[y][i];++i);
        if(!i) return f[x][0];
        x=f[x][i-1];y=f[y][i-1];
    }
}
inline void init(){
    scanf("%d%d%d",&n,&s,&t);
    for(int i=1,j,k;i<=n;++i){
        scanf("%d%d%s",&j,&k,c);
        addedge(k,j);
        l[j]=strlen(c);
        ++chl[k];fa[j]=k;
    }
    dfs(0);
    int k=lca(s,t);
    if(k!=s&&k!=t) tim=chl[k];
    len=l[k];
    for(int i=s;i!=k;i=fa[i]){
        len+=l[i];
        if(i!=s) tim+=chl[i];
    }
    for(int i=t;i!=k;i=fa[i]){
        len+=l[i];
        if(i!=t) tim+=chl[i];
    }
    printf("%d\n%d\n",len,tim);
}
int main(){
    freopen("folder.in","r",stdin);
    freopen("folder.out","w",stdout);
    init();
    fclose(stdin);
    fclose(stdout);
    return 0;
}
时间: 2024-10-24 14:05:09

[vijos1427]机密信息的相关文章

用 k8s 管理机密信息 - 每天5分钟玩转 Docker 容器技术(155)

应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 Secret. Secret 会以密文的方式存储数据,避免了直接在配置文件中保存敏感信息.Secret 会以 Volume 的形式被 mount 到 Pod,容器可通过文件的方式使用 Secret 中的敏感数据:此外,容器也可以环境变量的方式使用这些数据. Secret 可通过命令行或 YAML 创建.比如希望 Secret 中包含如下信息: 用

超级眼电脑监控软件保护企业机密信息让商业间谍无处遁形

现代企业发展信息安全的重要性不言而喻,那么有没有一款软件可以保护文件防泄密让文件不能通过任何方式传播出去,防止员工有意或无意中泄露公司资料,保护公司的信息安全? 美国<福布斯>等杂志提供的资料显示,很多欧美大公司都曾采取"不光彩"的手段获取竞争对手的机密材料: 德国大众汽车公司曾派出商业间谍到通用汽车公司偷取数箱机密计划文件,被诉后不得不向对方支付1亿美元的庭外和解费: 宝洁公司曾雇用间谍以市场分析员的名义潜入联合利华公司,从后者的"垃圾堆"中获得大量机

kubernetes管理机密信息

一.启动应用安全信息的保护: Secret介绍: 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 Secret. Secret 会以密文的方式存储数据,避免了直接在配置文件中保存敏感信息.Secret 会以 Volume 的形式被 mount 到 Pod,容器可通过文件的方式使用 Secret 中的敏感数据:此外,容器也可以环境变量的方式使用这些数据. Secret 可通过命令行或 YAML

iOS -- SKSpriteNode类

SKSpriteNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKSpriteNode.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术

iOS -- SKScene类

SKScene类 继承自 SKEffectNode:SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKScene.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开

iOS -- SKPhysicsWorld类

SKPhysicsWorld类 继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKPhysicsWorld.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术文档.虽然已经审阅了本文档的技术准确性,但是它不是最终的版本.本机密信息仅适用于

前端学HTTP之web攻击技术

前面的话 简单的HTTP协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击的对象.应用HTTP协议的服务器和客户端,以及运行在服务器上的Web应用等资源才是攻击目标.本文将详细介绍攻击web站点的手段 总括 与最初的设计相比,现今的Web网站应用的HTTP协议的使用方式已发生了翻天覆地的变化.几乎现今所有的Web网站都会使用会话(session)管理.加密处理等安全性方面的功能,而HTTP协议内并不具备这些功能 从整体上看,HTTP就是一个通用的单纯协议机制.因此它具备较多优势,但是在安全

大网站安全防护措施解读【转】

网站安全问题可以说是现在最引人关注的问题,有关服务器安全.用户隐私安全.企业数据安全的文 章和争论从来没有停息过.系统管理员作为网站安全的第一道哨岗,既要确保网站服务器系统的安全,也 要考虑到网站应用的一些基本安全防护.这篇总结对于服务器端的安全防护思路介绍的相当详细.但是要 保护网站的安全运作, 仅仅针对服务器系统本身的防护是不够的, 还需要有一个更全局的视角和防范思路. 本文中介绍的十条措施虽然涉及到用户身份验证. 数据加密传输. 子网划分. 灾难备份等多个方面的内容, 但所有这些其实都是维

bootstrap table 服务器端分页--ashx+ajax

1.准备静态页面 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title></title> 6 <meta charset="utf-8" /> 7 <link rel="