zoukankan      html  css  js  c++  java
  • luogu P1137 旅行计划

    emmmmm

    很久很久很久以前加到任务计划里的一道题

    终于做了www

    所以

    这道题还是蛮简单的

    大概有一点拓扑排序的思想?

    虽然我到现在也不知道拓扑排序怎么应用23333

    唔看一下题面吧

    悄咪咪吐槽一下 改版之后真的丑www

    emmmm

    怎么讲呢

    就是有向的图的遍历吧大概。。。(不靠谱的瞎说请不要盲目相信

    上代码了(真草率

    #include<cstdio>
    #include<queue>
    using namespace std;
    #define maxn 200010
    
    struct EDGE{
      int to,nxt;
    }edge[maxn];
    
    int head[maxn];
    int cnt,d[maxn],vis[maxn];
    queue<int>q;
    
    void add(int x,int y){
      edge[++cnt].to = y;
      edge[cnt].nxt = head[x];
      head[x] = cnt;
    }//存图
    
    int main(){
      int n,m;
      scanf("%d%d",&n,&m);
      for(int i = 1;i <= m;i++){
        int a,b;
        scanf("%d%d",&a,&b);
        add(a,b);//存图,因为分东西所以有向
        d[b]++;//d数组记录每个点的入度
      }
      for(int i = 1;i <= n;i++)
        if(!d[i]){//入度为零可以作为起点遍历
          q.push(i);//入队
          vis[i] = 1;//走了一个城市
        }
      while(!q.empty()){
        int x = q.front();//取队首元素
        for(int i = head[x];i;i = edge[i].nxt){
          int v = edge[i].to;
          d[v]--;//入度减一,相当于删边
          if(!d[v]){//入度为零
        vis[v] = vis[x] + 1;//走过的城市数加一
        q.push(v);//入队
          }
        }
        q.pop();//biu~
      }
      for(int i = 1;i <= n;i++)
        printf("%d
    ",vis[i]);//输出
      return 0;
    }

    (在此顺道吐槽一下改版后的代码字体,太丑了 |-|

    挺好理解的

  • 相关阅读:
    四色定理+dfs(poj 1129)
    栈的应用:表达式求值运算
    多重背包 (poj 1014)
    poj 1080 (LCS变形)
    KMP算法(快速模式匹配)
    贪心+构造( Codeforces Round #344 (Div. 2))
    JavaScript Ajax
    Canvas绘图
    TCP/IP协议
    移动端click事件延迟300ms到底是怎么回事,该如何解决?
  • 原文地址:https://www.cnblogs.com/sevenyuanluo/p/10235904.html
Copyright © 2011-2022 走看看