topsort

第一道拓扑

/**
    HDU 1285 拓扑
    A->B直接建图AC代码
*/
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#define  MAXN 510
#define  INF  1<<29

using namespace std;
int n,m,mp[MAXN][MAXN],in[MAXN];

void init()
{
    memset(mp,0,sizeof(mp));
    memset(in,0,sizeof(in));
}

int main()
{
    int a,b;
    while(~scanf("%d%d",&n,&m))
    {
        init();
        for(int i=0; i<m; i++)
        {
            scanf("%d%d",&a,&b);
            if(!mp[a][b])
            {
                mp[a][b]=1;
                in[b]++;
            }
        }
        for(int i=1; i<=n; i++)///选出n个点算选完
        {
            for(int j=1; j<=n; j++)///选入度为0的点
            {
                if(in[j]==0)
                {
                    in[j]--;
                    if(i==n)printf("%d\n",j);
                    else printf("%d ",j);

                    for(int k=1; k<=n; k++) ///j到达的点入度-1
                    {
                        if(mp[j][k]) in[k]--;
                    }
                    break;
                }
            }
        }
    }
    return 0;
}
时间: 2024-11-03 05:34:34

topsort的相关文章

POJ - 3249 Test for Job (DAG+topsort)

Description Mr.Dog was fired by his company. In order to support his family, he must find a new job as soon as possible. Nowadays, It's hard to have a job, since there are swelling numbers of the unemployed. So some companies often use hard tests for

HDU 1285 确定比赛名次 Topsort

题目大意:称职的裁判员忘记了比赛的名次,但还记得谁战胜了谁,给定M组条件,例如A->B 表示A战胜了B,保证信息之间不相互排斥,求输出比赛的名次. 题目分析:是明显的拓扑排序: 在此再介绍一下topsort,核心思想是通过给定的有向无环图确定每个点的入度,比如map[i][j]即表示i战胜了j,此时j的入度+1.但如果存在K点的入度为零,则表示没有人战胜了它,那么他即使排名第一的,然后删除该节点,再以该节点为起始节点,将K战胜的队伍入度-1,再重复上述环节. 总结一下就是: pre:建图,确定每

【拓扑排序topsort】【p1226】神经网络

描述 Description 神经网络就是一张有向图,图中的节点称为神经元,而且两个神经元之间至多有一条边相连,下图是一个神经元的例子: 神经元[编号为1) 图中,X1-X3是信息输入渠道,Y1-Y2是信息输出渠道,C1表示神经元目前的状态,Ui是阈值,可视为神经元的一个内在参数. 神经元按一定的顺序排列,构成整个神经网络.在兰兰的模型之中,神经网络中的神经元分为几层:称为输入层.输出层,和若干个中间层.每层神经元只向下一层的神经元输出信息,只从上一层神经元接受信息.下图是一个简单的三层神经网络

BC 2015百度之星程序设计大赛 - 热身赛(仅供熟悉比赛环境)(Harry and Magical Computer-topsort)[Template:topsort]

Harry and Magical Computer Accepts: 402 Submissions: 1588 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) 问题描述 作为年度优秀魔法学员的奖赏,哈利得到了一台具有魔力的计算机.这台计算机一旦开始处理某个任务,就会一直处理到这个任务结束为止(所以你可以认为它是单线程的).有一天,这台计算机得到了n个任务要处理,分别标号1到n.这

(tarjan建图+topsort+状态压缩) bzoj 2208

2208: [Jsoi2010]连通数 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1489  Solved: 606[Submit][Status][Discuss] Description Input 输入数据第一行是图顶点的数量,一个正整数N. 接下来N行,每行N个字符.第i行第j列的1表示顶点i到j有边,0则表示无边. Output 输出一行一个整数,表示该图的连通数. Sample Input 3 010 001 100 Sample

拓扑排序 topsort详解

1.定义 对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列. 举例: h3 { margin-top: 0.46cm; margin-bottom: 0.46cm; direction: ltr; color: #000000; line-height: 172%; text-align: justify; page-break-inside: avoid; orphans: 0; w

DZY Loves Topological Sorting (BC #35 hdu 5195 topsort+优先队列)

DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 264    Accepted Submission(s): 63 Problem Description A topological sort or topological ordering of a directed gr

POJ 2762 Going from u to v or from v to u?(强联通 + TopSort)

题目大意: 为了锻炼自己的儿子 Jiajia 和Wind 把自己的儿子带入到一个洞穴内,洞穴有n个房间,洞穴的道路是单向的. 每一次Wind 选择两个房间  x 和 y,   让他的儿子从一个房间走到另一个房间,(要么从 x->y  或者 y->x), Wind承诺这个是一定可以走到的.但是他不知道如何判断这个 xy一定是互通的,现在给你一个洞穴,问随机给你两个洞穴的编号,是否是相通的. 题目分析:题目意思有点偏移,其实意思是(只要能从x->y  或者 y->x 这个都算是通的),

ZOJ 3780 Paint the Grid Again(topsort)

ZOJ Problem Set - 3780 Paint the Grid Again Time Limit: 2 Seconds      Memory Limit: 65536 KB Leo has a grid with N × N cells. He wants to paint each cell with a specific color (either black or white). Leo has a magical brush which can paint any row

hdu 1285 确定比赛名次 (topsort)

确定比赛名次Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 36309    Accepted Submission(s): 14221 Problem Description有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获