poj 3687 Labeling Balls 逆向拓扑

  要求输出每个球的重量,标号越小的重量越轻越好。

  逆向拓扑,从大向小查找入度为0的点,然后赋予最大的值,这样就可以保证小号重量轻了

  好久没敲代码了,完全不会敲了

/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#define INF 1E9
using namespace std;
int n,m;
int map[201][201],in[201];
int ans[201];
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        memset(map,0,sizeof(map));
        memset(in,0,sizeof(in));
        scanf("%d%d",&n,&m);
        int a,b,i;
        for(i=0;i<m;i++)
        {
            scanf("%d%d",&b,&a);
            if(map[a][b])continue;
            map[a][b]=1;
            in[b]++;
        }
        int Min=0,j,k=0;
        bool flag=1;
        for(i=n;i>=1;i--)
        {
            for(j=n;j>0,in[j]!=0;j--);
            if(j==0){flag=0;break;}
            for(int nn=1;nn<=n;nn++)
            {
                if(!map[j][nn])continue;
                in[nn]--;
            }
            in[j]=i;
            ans[i]=j;
        }
        if(!flag)printf("-1\n");
        else
        {
            printf("%d",in[1]);
            for(i=2;i<=n;i++)
             printf(" %d",in[i]);
            puts("");
        }
    }
}
时间: 2024-09-20 00:26:28

poj 3687 Labeling Balls 逆向拓扑的相关文章

POJ 3687 Labeling Balls:拓扑序列

Labeling Balls:http://poj.org/problem?id=3687 大意:n个重量分别为1-n的小球,给定一些小球间的重量关系. 在符合重量关系的前提下,先输出编号小的球. 思路:也是一道很简单的拓扑排序,不过要倒着来,注意一下要判重边. #include <string.h> #include <iostream> using namespace std; int Map[210][210], indegree[210], Ans[210]; int n,

poj 1094 Sorting It All Out(拓扑排序)

链接: http://poj.org/problem?id=1094 题目: Sorting It All Out Time Limit: 1000MS     Memory Limit: 10000K Total Submissions: 21532     Accepted: 7403 Description An ascending sorted sequence of distinct values is one in which some form of a less-than ope

算法:POJ 3683 Priest John&#039;s Busiest Day(2-SAT + 拓扑输出方案)

[题目大意] 有个小镇上有n对夫妻要举办婚礼,每队夫妻都要请镇上的牧师举行一个仪式,但 是镇上只有一个牧师,牧师一次只能为一对夫妻做仪式. 已知每队夫妻的婚礼的起始t1和结束的时 间t2, 他们举办仪式的时间是d,仪式只能在婚礼开始的前d时间举行或者在结束之前的d内举行.问牧师能 不能合理安排,使得每对夫妻都能举办仪式? [思路] 对于每一对夫妻,他们要么在开始时 做仪式,要么在结束时做仪式,所以是2-SAT模型. 这题要输出任一个方案,研究了好几个小时.. . [代码] #include<io

poj 1093 Sorting It All Out AOV网络+拓扑

          一道拓扑的题,只是每增加一条拓扑一次,要注意是否有人为添加的边,也就是同一时刻有没有多个可选项.         这题少加了个return 0,错了n次--注意细节.          非常简单的题,结果写了70多分钟--   /* author:jxy lang:C/C++ university:China,Xidian University **If you need to reprint,please indicate the source** */ #include

poj 1128 Frame Stacking 拓扑

        和上一题一样的一个覆盖问题,这个要给出全部可能序列,所以就有个递归过程      用了很多stl,本来以为会TLE,结果0ms就过了,还有很大的优化空间,比如可以把拓扑的dfs和入度为0结合起来就可以少很多重复搜索的情况.   /* author:jxy lang:C/C++ university:China,Xidian University **If you need to reprint,please indicate the source** */ #include <i

POJ 1094(经典拓扑排序)

http://www.cnblogs.com/zhourongqing/archive/2011/11/27/2265384.html http://www.cnblogs.com/pushing-my-way/archive/2012/08/23/2652033.html

POJ题目分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

POJ 3176 Cow Bowling:简单DP

Cow Bowling http://poj.org/problem?id=3176 Time Limit: 1000MS Memory Limit: 65536K Description The cows don't use actual bowling balls when they go bowling. They each take a number (in the range 0..99), though, and line up in a standard bowling-pin-l

POJ 最短路问题题号汇总

求最短路基本的算法: 1>Dijkstra算法2>Bellman-Ford算法3>Floyd算法4>Floyd-Warshall算法5>Johnson算法6>A*算法 题目: 1.poj1062 昂贵的聘礼(中等)     此题是个经典题目:用Dijkstra即可:但是其中的等级处理需要一定的技巧:    要理解好那个等级制度:这个处理好,基本就是裸体Dijkstra: 2 poj1125 Stockbroker Grapevine(基本)    这个是简单Floyd,