zoukankan      html  css  js  c++  java
  • 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 范围内

    图论 差分约束

    差分约束模板题。

    好像……没读懂题?描述不清是出题人的错吧!

    前m个关系是给定 a,b,w,限制 b - a <=w

    后k个关系是给定 a,b,w,限制 b-a>=w

     1 /*by SilverN*/
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstdio>
     5 #include<cmath>
     6 #include<cstring>
     7 #include<queue>
     8 using namespace std;
     9 const int mxn=10010;
    10 int read(){
    11     int x=0,f=1;char ch=getchar();
    12     while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    13     while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
    14     return x*f;
    15 }
    16 struct edge{
    17     int v,nxt,w;
    18 }e[mxn<<1];
    19 int hd[mxn],mct=0;
    20 void add_edge(int u,int v,int w){
    21     e[++mct].v=v;e[mct].nxt=hd[u];e[mct].w=w;hd[u]=mct;return;
    22 }
    23 int dis[mxn];
    24 bool inq[mxn];
    25 int vis[mxn];
    26 queue<int>q;
    27 int n,m1,m2;
    28 void SPFA(){
    29     memset(dis,0x3f,4*(n+1));
    30     dis[1]=0;
    31     q.push(1);
    32     while(!q.empty()){
    33         int u=q.front();q.pop();inq[u]=0;
    34         for(int i=hd[u];i;i=e[i].nxt){
    35             int v=e[i].v;
    36             if(dis[v]>dis[u]+e[i].w){
    37                 dis[v]=dis[u]+e[i].w;
    38                 ++vis[v];
    39                 if(vis[v]>n){printf("-1
    ");exit(0);}
    40                 if(!inq[v]){ inq[v]=1;    q.push(v); }
    41             }
    42         }
    43     }
    44     return;
    45 }
    46 int main(){
    47     int i,j,u,v,w;
    48     n=read();m1=read();m2=read();
    49     for(i=1;i<=m1;i++){
    50         u=read();v=read();w=read();
    51         add_edge(u,v,w);
    52     }
    53     for(i=1;i<=m2;i++){
    54         u=read();v=read();w=read();
    55         add_edge(v,u,-w);
    56     }
    57     SPFA();
    58     if(dis[n]==0x3f3f3f3f)printf("-2
    ");
    59         else printf("%d
    ",dis[n]);
    60     return 0;
    61 }
  • 相关阅读:
    JS加载机制
    js原型和原型链(用代码理解代码)
    解决echarts图形由于label过长导致文字显示不全问题
    微信小程序setData()异常
    Add GNOME to a CentOS Minimal Install
    vim的tab缩进及用空格设置
    ORA-12547: TNS:lost contact
    python+Django实现Nagios自动化添加监控项目
    python <tab>自动补全
    电信服务规范
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/7168898.html
Copyright © 2011-2022 走看看