zoukankan      html  css  js  c++  java
  • codeforces 1037E. Trips(倒叙)

    题目传送门:

    解题思路:

    正着搞好像有点恶心。

    反着搞。

    一边删一边搞,从崩坏的地方开始,入度--。

    最后dfs崩坏,更新答案。

    注意要把边删掉防止重复崩坏。

    代码:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 struct pnt{
     5     int hd;
     6     int ind;
     7     bool ded;
     8 }p[1000000];
     9 struct ent{
    10     int twd;
    11     int lst;
    12 }e[1000000];
    13 int cnt;
    14 int n,m,k;
    15 int lft;
    16 int ans[1000000];
    17 int u[1000000],v[1000000];
    18 void ade(int f,int t)
    19 {
    20     cnt++;
    21     e[cnt].twd=t;
    22     e[cnt].lst=p[f].hd;
    23     p[f].hd=cnt;
    24     p[f].ind++;
    25     return ;
    26 }
    27 void Delete(int x)
    28 {
    29     if(p[x].ded)
    30         return ;
    31     p[x].ded=true;
    32     lft--;
    33     for(int i=p[x].hd;i;i=e[i].lst)
    34     {
    35         int to=e[i].twd;
    36         p[to].ind--;
    37         if(p[to].ind<k)
    38             Delete(to);
    39     }
    40     return ;
    41 }
    42 int main()
    43 {
    44     scanf("%d%d%d",&n,&m,&k);
    45     for(int i=1;i<=m;i++)
    46     {
    47         scanf("%d%d",&u[i],&v[i]);
    48         ade(u[i],v[i]);
    49         ade(v[i],u[i]);
    50     }
    51     lft=n;
    52     for(int i=1;i<=n;i++)
    53     {
    54         if(p[i].ind<k)
    55         {
    56             Delete(i);
    57         }
    58     }
    59     for(int i=m;i;i--)
    60     {
    61         ans[i]=lft;
    62         p[u[i]].hd=e[p[u[i]].hd].lst;
    63         p[v[i]].hd=e[p[v[i]].hd].lst;
    64         if(!p[v[i]].ded)
    65             p[u[i]].ind--;
    66         if(!p[u[i]].ded)
    67             p[v[i]].ind--;
    68         if(p[v[i]].ind<k)
    69             Delete(v[i]);
    70         if(p[u[i]].ind<k)
    71             Delete(u[i]);
    72     }
    73     for(int i=1;i<=m;i++)
    74         printf("%d
    ",ans[i]);
    75     return 0;
    76 }
  • 相关阅读:
    团队项目:二次开发1.0
    文法分析2
    文法分析1
    词法分析实验总结
    0916 编程实验一 词法分析程序
    0909初学编译原理
    复利计算
    0302思考并回答一些问题
    1231 实验四 递归下降语法分析程序设计
    1118实验三有限自动机构造与识别
  • 原文地址:https://www.cnblogs.com/blog-Dr-J/p/9857962.html
Copyright © 2011-2022 走看看