zoukankan      html  css  js  c++  java
  • HDU5695:Gym Class(优先队列+拓扑排序)

    Problem Description
    众所周知,度度熊喜欢各类体育活动。

    今天,它终于当上了梦寐以求的体育课老师。第一次课上,它发现一个有趣的事情。在上课之前,所有同学要排成一列, 假设最开始每个人有一个唯一的ID,从1到N,在排好队之后,每个同学会找出包括自己在内的前方所有同学的最小ID,作为自己评价这堂课的分数。麻烦的是,有一些同学不希望某个(些)同学排在他(她)前面,在满足这个前提的情况下,新晋体育课老师——度度熊,希望最后的排队结果可以使得所有同学的评价分数和最大。
     

    Input
    第一行一个整数T,表示T(1T30) 组数据。

    对于每组数据,第一行输入两个整数NM(1N100000,0M100000),分别表示总人数和某些同学的偏好。

    接下来M行,每行两个整数A 和B(1A,BN),表示ID为A的同学不希望ID为B的同学排在他(她)之前。你可以认为题目保证至少有一种排列方法是符合所有要求的。
     

    Output
    对于每组数据,输出最大分数 。
     

    Sample Input
    3 1 0 2 1 1 2 3 1 3 1
     

    Sample Output
    1 2 6
    我们所能够做的就是尽量把序号大的放在前面,有些同学必须站在某些同学的前面 简单的拓扑排序 建立一个图 我们可以把所有人看做一个带权点,权值为ID值。然后如果读入一个A,B表示A不想B站在A的前面。那么就引一条从A到B的有向边。如果要进入队列 入度应该为0
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<queue>
    #include<algorithm>
    using namespace std;
    vector<int>v[100001];
    priority_queue<int>q;
    int in[100001];
    int main()
    {
       int t;
       scanf("%d",&t);	
       long long sum;
       while(t--)
       {
       	memset(in,0,sizeof(in));
       	int n,m;
       	scanf("%d%d",&n,&m);
       	while(!q.empty() )
          	q.pop() ;
       	for(int i=1;i<=n;i++)
       	{
       	    v[i].clear();//清空 
    	   }
    	   int a,b;
    	   for(int i=0;i<m;i++)
    	   {
    	   	scanf("%d%d",&a,&b);
    	   	v[a].push_back(b); 
    	   	in[b]++;//标记 
    	   }
    	  for(int i=1;i<=n;i++)
    	 {
    		if(in[i]==0)
    		q.push(i); 
        	}
        	int mi=n;
             sum=0;
        	while(!q.empty() )
        	{
        		int k=q.top() ;
        		q.pop() ;
        		for(int i=0;i<v[k].size();i++ )
        		{
        			in[v[k][i]]--;
        			if(in[v[k][i]]==0)//当入度为0时  加入队列 
        			q.push(v[k][i]); 
    			}
    			mi=min(mi,k);//找出到目前为止队列中最小的序号 
    			sum+=mi;
    		}
    		printf("%lld
    ",sum);
       }
    	return 0;
    }
    


  • 相关阅读:
    团队项目-第一阶段冲刺7
    团队项目-第一阶段冲刺6
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(六) 消息队列篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(四) 配置文件篇
  • 原文地址:https://www.cnblogs.com/kingjordan/p/12027029.html
Copyright © 2011-2022 走看看