当前位置: 首页 > news >正文

codevs4416 FFF 团卧底的后宫

题目描述  Description

你在某日收到了 FFF 团卧底的求助,在他某日旅游回来,他的后宫们出现了一些不可调和的矛盾,如果 FFF 团卧底把自己的宝贝分给 a 号妹子,那么 b 号妹子至少要在站在 a 号妹子的右边距离 d,妹子才愿意得到那个宝贝。可是后宫里也有玩得好的妹子呀,她们总是渴望亲近一点,如果把自己的宝贝分给 a 号妹子,那么与她亲近的妹子与 a 号妹子的距离不会超过 l。现在总共有 n 个妹子,k 个这样的矛盾关系,m 个亲近关系。假设他的宝贝是无限的,保证每一个妹子都有宝贝的情况下,第 n 个妹子和第一个妹子的最远距离是多少呢?

输入描述  Input Description

第一行为 n,m,k

此后 m 行为亲近关系

此后 k 行为矛盾关系

输出描述  Output Description

一行,为最长的距离

样例输入  Sample Input

4 2 1

1 3 100

2 4 200

2 3 33

样例输出  Sample Output

267

数据范围及提示  Data Size & Hint

对于 40%的数据,n<=100

对于 100%的数据,n<=1000,m<=10000,从 1 开始编号,距离在 int 范围内

//copy
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <queue>

using namespace std;

vector < int > linker[1000 + 2];
vector < int > di[1000 + 2];
int dist[1000 + 2];
bool use[1000 + 2];
int n , a , b;
int x , y , z;
int inq[1000 + 2];

inline int spfa()
{
    queue < int > q;
    q.push( 1 );
    int now , i , cur , v;
    for( i = 1 ; i <= n ; i++ )
         dist[i] = 10000000;
    dist[1] = 0;
    inq[1]++;
    while( !q.empty() )
    {
        now = q.front();
        q.pop();
        use[ now ] = 0;
        for( i = 0 ; i < linker[ now ].size() ; i++ )
        {
             cur = linker[ now ][i];
             v = di[ now ][i];
             if( dist[ cur ] > dist[ now ] + v )
             {
                 dist[ cur ] = dist[ now ] + v;
                 if( !use[ cur ] )
                 {
                     use[ cur ] = 1;
                     q.push( cur );
                     inq[ cur ]++;
                     if( inq[ cur ] > n ) return -1;
                 }
             }
        }
    }
    return dist[n];
}
int i;

int main()
{
    scanf( "%d %d %d" , &n , &a , &b );
    while( a-- )
    {
        scanf( "%d %d %d" , &x , &y , &z );
        linker[x].push_back( y );
        di[x].push_back( z );
    }
    while( b-- )
    {
        scanf( "%d %d %d" , &x , &y , &z );
        linker[y].push_back( x );
        di[y].push_back( -z );
    }
    int ans = spfa();
    if( ans == 10000000 ) cout << -2 << endl;
    else cout << ans << endl;
    return 0;
}

 

转载于:https://www.cnblogs.com/hyfer/p/5852376.html

相关文章:

  • 《深入浅出 Java Concurrency》—锁机制(三) 加锁的原理 (Lock.lock)
  • 1055. 集体照
  • 《深入浅出 Java Concurrency》—锁机制(四) 锁释放与条件变量 (Lock.unlock And Condition)
  • Java四种引用类型+ReferenceQueue+WeakHashMap
  • 《深入浅出 Java Concurrency》—锁机制(五) 闭锁 (CountDownLatch)
  • 《深入浅出 Java Concurrency》—锁机制(六) CyclicBarrier
  • PHPMySQL 语法
  • 《深入浅出 Java Concurrency》—锁机制(七) 信号量 (Semaphore)
  • jquery easyui datagrid 动态 加载列
  • 《深入浅出 Java Concurrency》—锁机制(八) 读写锁 (ReentrantReadWriteLock) (1)
  • Spring AOP
  • 《深入浅出 Java Concurrency》—锁机制(九) 读写锁 (ReentrantReadWriteLock) (2)
  • 《深入浅出 Java Concurrency》—锁机制(十) 锁的一些其它问题
  • Unix高级编程之文件IO
  • java集合框架学习—ArrayList的实现原理
  • php的引用
  • [PHP内核探索]PHP中的哈希表
  • [笔记] php常见简单功能及函数
  • 【Leetcode】104. 二叉树的最大深度
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • JavaScript设计模式系列一:工厂模式
  • js作用域和this的理解
  • orm2 中文文档 3.1 模型属性
  • python3 使用 asyncio 代替线程
  • Redux 中间件分析
  • TypeScript实现数据结构(一)栈,队列,链表
  • Windows Containers 大冒险: 容器网络
  • Yii源码解读-服务定位器(Service Locator)
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 巧用 TypeScript (一)
  • 人脸识别最新开发经验demo
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 一个项目push到多个远程Git仓库
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 《天龙八部3D》Unity技术方案揭秘
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #100天计划# 2013年9月29日
  • #define,static,const,三种常量的区别
  • #传输# #传输数据判断#
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (2)MFC+openGL单文档框架glFrame
  • (C语言)字符分类函数
  • (python)数据结构---字典
  • (二十三)Flask之高频面试点
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (循环依赖问题)学习spring的第九天
  • (一)RocketMQ初步认识
  • .Net Core和.Net Standard直观理解
  • .NET 分布式技术比较
  • .NET 依赖注入和配置系统
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .net专家(张羿专栏)