【POJ】3687【拓扑排序】【LabelingBalls】

原创 2013年12月03日 11:13:17

算法分析:

1)反向拓扑排序+优先队列

http://www.cppblog.com/Davidlrzh/articles/115620.html

2)原题

http://poj.org/problem?id=3687

#include<cstdio>
#include <cstring>
#define MAX 201
bool TopoSort(int (&into)[MAX],int(&map)[MAX][MAX],int(&topo)[MAX],int n){
    int i,j,k;
    for(i=n;i>=1;i--){
        j=n;
        while(into[j]!=0){//找入度为零的点
            j--;
            if(j<1)
                return false;
        }
        topo[j]=i;
        into[j]=-1;
        for(k=1;k<=n;k++){//找到后,将所有与j点相邻的点的入度减1
            if(map[j][k])
                into[k]--;
        }
    }
    return true;
}
int main(){
    int count,into[MAX],topo[MAX],map[MAX][MAX];
    scanf("%d",&count);
    while(count--){
        int n,m,i,a,b;
        scanf("%d%d",&n,&m);
        memset(map,0,sizeof(map));
        memset(into,0,sizeof(into));
        memset(topo,0,sizeof(topo));
        for(i=0;i<m;i++){
            scanf("%d%d",&a,&b);
            if(!map[b][a]){
                map[b][a]=1;
                into[a]++;
            }
        }
        if(TopoSort(into,map,topo,n)){
            for(i=1;i<n;i++)
                printf("%d ",topo[i]);
            printf("%d\n",topo[i]);
        }
        else printf("-1\n");
    }
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[ACM] POJ 3687 Labeling Balls (拓扑排序,逆向建边)

Labeling Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10161   Accepted: ...

poj3687 Labeling Balls 拓扑排序

题意:有n个球,给它们标上序号,满足一下要求,第i个的序号小于第j个的序号,此处i和j是输入的数据 解法:在图论专题里面看到的这道题,就一直往图那个方向想,想到了不能有环,但是没有想到拓扑排序,百度...

poj 3687 拓扑排序 反向建图

给你一些条件,规划重量,满足条件,编号靠前的jinl

POJ 3687 拓扑排序

居然是一道陷阱题。。。逆向建图,输出的是每个lable的weight Labeling Balls Time Limit: 1000MS   Memory Limit: 655...

图论-------拓扑排序解题报告--poj 3687

题目链接: http://poj.org/problem?id=3687 题目原文: Labeling Balls Time Limit: 1000MS   Mem...

POJ:3687 Labeling Balls (反向建图+拓扑排序+优先队列)

题意:给定n个球和m条球与球之间的轻重关系,要求输出每个球的重量,无解则输出-1. trick:1.有重边。             2.要求输出每个球的重量而不是从轻到重每个球的标签。 &...

[poj3687]拓扑排序的应用

Windy has N balls of distinct weights from 1 unit to N units. Now he tries to label them with 1 to N...

Poj 3687 Labeling Balls[拓扑排序]

题目链接:点击打开链接 很给力的道题,拓扑排序的应用,算是对TopSort认识更深了吧。 拓扑排序这里不做过多的解释,主要来说这道题的应用。 题目的意思就是给1——N质量的N个球贴标签,要求...

POJ3687 Labeling Balls(拓扑排序的应用)

给出一些球,从1~N编号,他们的重量都不相同,也用1~N标记加以区分(这里真心恶毒啊,估计很多WA都是因为这里),然后给出一些约束条件,要求编号为 a 的球必须比 b 轻,现在要求按编号升序输出每个球...

POJ 3687 Labeling Balls (逆向拓扑排序)

逆向拓扑, 拓扑排序
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)