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;
    }

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

    挺好理解的

  • 相关阅读:
    python学习随笔--string[:]
    年少时读不懂 天龙八部,如今读懂已过少年
    web安全测试随笔
    纪录jmeter loop controller 使用中的一个坑
    移动设备覆盖统计数据源
    jmeter and postman
    web测试----http状态码
    转自莫某的java学习计划
    jquery实现页面加载时删除特定class 的div内前三个字符
    js学习
  • 原文地址:https://www.cnblogs.com/sevenyuanluo/p/10235904.html
Copyright © 2011-2022 走看看