zoukankan      html  css  js  c++  java
  • Security Badges

    Security Badges

     

     题解:先把每个区间的端点存下来,然后排序,然后对每一个端点跑dfs,看其能否从起点到达终点,如果这个点能到达,就说明一定有一个区间包括了这个端点,我们就用这个端点减去他的前一个端点,得到的这个区间一定是符合条件的区间,之后将这些区间大小相加即可。

    AC_Code:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 #define endl '
    '
     5 const int maxn=1e3+10;
     6 const int maxm=5e3+10;
     7 const int inf=0x3f3f3f3f;
     8  
     9 struct node{
    10     int to,nxt,l,r;
    11 }e[maxm];
    12  
    13 int head[maxn],tot;
    14 int n,m,k,s,t,ans;
    15 int p[maxm*2],cnt,vis[maxn];
    16  
    17 void addedge(int u,int v,int l,int r){
    18     e[tot].to=v; e[tot].nxt=head[u]; e[tot].l=l; e[tot].r=r; head[u]=tot++;
    19 }
    20  
    21 void dfs(int u,int cur){
    22     vis[u]=1;
    23     for(int i=head[u];~i;i=e[i].nxt){
    24         int to=e[i].to,l=e[i].l,r=e[i].r;
    25         if( !vis[to] && l<=cur && cur<=r )
    26             dfs(to,cur);
    27     }
    28 }
    29  
    30 void init(){
    31     memset(head,-1,sizeof(head));
    32     tot=0;
    33 }
    34  
    35 int main()
    36 {
    37     init();
    38     scanf("%d%d%d",&n,&m,&k);
    39     scanf("%d%d",&s,&t);
    40     for(int i=0;i<m;i++){
    41         int u,v,l,r;
    42         scanf("%d%d%d%d",&u,&v,&l,&r);
    43         addedge(u,v,l,r);
    44         p[++cnt]=l-1;//注意这里设的好:1.保证这个点可以的话,他和它前面的点一定在一个区间,且该区间的数都可以;2.保证了区间长度计算正确
    45         p[++cnt]=r;
    46     }
    47     sort(p+1,p+1+cnt);
    48     int reu=unique(p+1,p+1+cnt)-p-1;
    49     for(int i=1;i<=reu;i++){
    50         memset(vis,0,sizeof(vis));
    51         dfs(s,p[i]);
    52         if( vis[t] ) ans+=p[i]-p[i-1];
    53     }
    54     printf("%d
    ",ans);
    55     return 0;
    56 }
  • 相关阅读:
    洛谷 P2008 大朋友的数字
    [USACO10FEB]慢下来Slowing down
    HAOI2007 理想的正方形 单调队列
    滑动窗口
    双栈排序
    概率无向图模型与条件随机场的异同
    P-R曲线出现凹陷的原因
    MaskLab-实例分割(使用语义分割和方向特征精细化目标检测)
    模拟递归生成器
    递归生成器
  • 原文地址:https://www.cnblogs.com/wsy107316/p/13437082.html
Copyright © 2011-2022 走看看