• 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 }
  • 相关阅读:
    GIS有关GP服务的发布和调用
    博文列表
    VCL编写笔记整理
    Delphi操作Excel(Use Oel)
    使用 ImageEnView 给图片加水印,及建缩略图
    Delphi下MSMQ(Mircosoft Message Queue)实例(私有队列)
    从给定字符串中截取n个字节的字符(解决汉字截取乱码问题)
    tbytes 转 十六进制 string
    Delphi中拖动的方式来移动TPageControl的Tab
    delphi TEdit透明
  • 原文地址:https://www.cnblogs.com/wsy107316/p/13437082.html
Copyright © 2020-2023  润新知