zoukankan      html  css  js  c++  java
  • hdu 2647拓扑排序 结构体模拟容器

    #include<stdio.h>
    #include<queue>
    #include<iostream>
    using namespace std;
    #define  N  11000
    int n,m,sum;
    struct node {
    int indegree,num;
    int value,next[300];
    }now[N];
    int Max(int a,int b) {
    return a>b?a:b;
    }
    int find() {
           queue<node>q;
      node cur;
      int i,f=0;
      for(i=1;i<=n;i++)
    if(now[i].indegree==0) {
    now[i].value=888;
    f=1;
    q.push(now[i]);
    }
    if(f==0)
    return 1;
    f=n;
    while(!q.empty()) {
    cur=q.front();
    q.pop();
    f--;
    for(i=0;i<cur.num;i++) {
              now[cur.next[i]].value=Max(now[cur.next[i]].value,cur.value+1);
    if(--now[cur.next[i]].indegree==0)
    q.push(now[cur.next[i]]);
    }
    }
    if(f==0)
    return 0;
    return 1;
    }
    int main() {
    int i,a,b;
    while(scanf("%d%d",&n,&m)!=EOF) {
    for(i=1;i<=n;i++) {
    now[i].num=0;
    now[i].indegree=0;
    now[i].value=0;
    memset(now[i].next,0,sizeof(now[i].next));
    }
    while(m--) {
    scanf("%d%d",&a,&b);
    now[a].indegree++;
    now[b].next[now[b].num++]=a;
    }
    if(find()) {
    printf("-1 ");
    continue;
    }
    sum=0;
    for(i=1;i<=n;i++)
    sum+=now[i].value;
    printf("%d ",sum);
    }
    return 0;
    }
  • 相关阅读:
    用户数据报协议---UDP
    斐波那契数列
    从尾到头打印链表
    Mybatis三种查询方式
    Mybatis配置
    字典的用法
    遍历列表、切片、定义元组
    与列表相关知识
    python一些方法总结
    计算机的容量
  • 原文地址:https://www.cnblogs.com/thefirstfeeling/p/4410880.html
Copyright © 2011-2022 走看看