zoukankan      html  css  js  c++  java
  • hdu1285

    解题思路:拓扑排序+优先队列,每次找入度为零时的点的时候且值最小的。。。我觉得题目有点问题,刚开始写的时候,以为样例的答案是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;
    }

  • 相关阅读:
    phalapi框架where条件查询
    yii2学习网站
    改变yii2 $form最外层div样式
    PHP库(数据抓取)
    yii框架场景的用法
    Yii框架数据查询
    更改控制台编码格式
    打开yii2控制台命令
    过滤器实现登录拦截
    SSM整合
  • 原文地址:https://www.cnblogs.com/huangdao/p/7732493.html
Copyright © 2011-2022 走看看