解题思路:拓扑排序+优先队列,每次找入度为零时的点的时候且值最小的。。。我觉得题目有点问题,刚开始写的时候,以为样例的答案是1 4 2 3,毕竟1和4没输过啊。。。结果去看了样例一眼,傻了。

#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
#include<vector>
#define maxn 100006
using namespace std;
struct node
{
    int w;
    int to;
    int next;
}edge[maxn];
int cnt;
int visit[maxn];
int head[maxn];
int n,m,seq[maxn];//存点用;
int indeg[maxn];
int indegree[maxn];//算入度用的集合;
void add(int u,int v)//链式前向星存图;
{
    edge[cnt].to=v;
    edge[cnt].next=head[u];
    head[u]=cnt++;
}
int topu()
{
    priority_queue<int,vector<int>,greater<int> >q;
    for(int i=1;i<=n;i++)
    {
        indeg[i]=indegree[i];
        if(indeg[i]==0)
            q.push(i);
    }
    int k=0;
    bool res=false;
    while(!q.empty())
    {
        if(q.size()!=1)//每次入度为零的只能有一个,不然有其他路径;
            res=true;
        int u=q.top();
        q.pop();
        seq[k++]=u;//seq为排好的顺序;
        //cout<<u<<" ";
        for(int i=head[u];i!=-1;i=edge[i].next)
        {
            int v=edge[i].to;
            indeg[v]--;
            if(indeg[v]==0)
            {
                q.push(v);
            }
        }
    }
    return k;
}
int main()
{
    int x,y;
    while(cin>>n>>m)
    {
        memset(head,-1,sizeof(head));
        memset(indeg,0,sizeof(indeg));
        memset(indegree,0,sizeof(indegree));
        for(int i=1;i<=m;i++)
        {
            cin>>x>>y;
            add(x,y);
            indegree[y]++;
        }
        int z=topu();
        for(int i=0;i<z;i++)
        {
            cout<<seq[i];
            if(i<=z-2)
            cout<<" ";
        }
        cout<<endl;
    }
    return 0;
}

hdu1285的更多相关文章

  1. 两个很经典的拓扑排序题目POJ3687+HDU1285

    一.题目链接 POJ:http://poj.org/problem?id=3687 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=1285 二.思路 这两 ...

  2. *HDU1285 拓扑排序

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  3. 确定比赛名次---HDU1285(拓扑排序)

    http://acm.hdu.edu.cn/showproblem.php?pid=1285 题目大意: 给你每场比赛的成绩,让你根据成绩把排名弄出来 分析: 本来我是用普通方法写的,然后就一直wa, ...

  4. hdu1285 拓扑序

    题意:有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩, ...

  5. 拓扑排序 HDU1285

    这个题是个模板题,可以直接用拓扑排序的模板来做, AC代码 #include <stdio.h> #include<iostream> #include <string. ...

  6. HDU1285——确定比赛名次

    Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委 ...

  7. hdu1285+hdu2467(拓扑排序)

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  8. hdu1285 确定比赛名次(拓扑排序)

    确定比赛名次 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  9. HDU1285 确定比赛名次

    有N个比赛队(<=N<=),编号依次为1,,,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结 ...

  10. hdu1285 确定比赛名次(拓扑排序)

    有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道 ...

随机推荐

  1. PAT A1075 PAT Judge (25 分)——结构体初始化,排序

    The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...

  2. linux问题总结

    编写后台进程的管理脚本,使用service deamon-name stop的时候,出现如下提示:/sbin/service: line 66: 23299 Terminated env -i LAN ...

  3. Objective-C Core Animation深入理解

    Core Animation(核心动画),是从Layer Kit(图层工具包)演变而来的,不仅仅可以用来做动画. 1.视图 一个视图就是屏幕上显示的一个矩形,例如文字.图片和视频. 视图是UIView ...

  4. odoo仓库单据产品过滤写法

    def onchange_picking_type_id(self, cr, uid,ids, picking_type_id, context=None): if picking_type_id i ...

  5. BZOJ 2810 [Apio2012]kunai

    Orz Starria 现在看来,也不是很难,能做...就是不能写 可以想到维护每个苦无扫过的矩形,然后做矩形面积并即可. 然后发现自己只会$n^2$的处理方法... 想了好久之后问了一发 Starr ...

  6. JAVA实现用户的权限管理

    一:写在前面 前两天有个同学问我,那个系统不同的用户登陆不同的页面不同,要写很多个页面啊!而每个用户的在系统中拥有不同的权限,可以访问不同的页面是怎么实现的??那低权限的在浏览器输入高权限的人的url ...

  7. Android自动化测试之:获取 参数:comonentName 的值方法

    十年河东十年河西,莫欺少年穷! 不了解Activity的,可参考:http://www.cnblogs.com/tekkaman/archive/2011/06/07/2074211.html 相关代 ...

  8. HDU3062&&HDU1814

    Preface 两道2-SAT模板题. HDU3062 看题目就一眼2-SAT.一对夫妻看成一个变量,之间的矛盾可以看成限制. 考虑不同席的限制,相当于选了\(i\)就不选\(j\),即必选\(j'\ ...

  9. sqli-labs less 1-4

    sqli-labs less 1-4 数字型注入 当输入的参数为整形时,如果存在注入漏洞,可以认为是数字型注入. 测试步骤: (1) 加单引号,URL:www.text.com/text.php?id ...

  10. Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)

    之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...