Gym Class HDU

来源:互联网 发布:洋葱英语软件 编辑:程序博客网 时间:2024/06/04 01:25

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

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

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

接下来MM行,每行两个整数AA 和B(1A,BN)B(1≤A,B≤N),表示ID为AA的同学不希望ID为BB的同学排在他(她)之前。你可以认为题目保证至少有一种排列方法是符合所有要求的。 
Output
对于每组数据,输出最大分数 。
Sample Input
31 02 11 23 13 1
Sample Output
126

拓扑排序,一个简单的模版题,可以看一下我的上一篇博客借鉴的两位大神的博客.

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>#include<set>#include<vector>using namespace std;priority_queue<int> out;vector<int> op[100001];int ru[100001];int main(){    int T;    scanf("%d", &T);    int n,m;    while(T--)    {       scanf("%d %d",&n,&m);       for(int i=1; i<=n; i++)       {           op[i].clear();       }       memset(ru, 0,sizeof(ru));       while(!out.empty()) out.pop();       for(int i=1; i<=m; i++)       {           int u,v;           scanf("%d %d",&u,&v);           ru[v]++;           op[u].push_back(v);       }       for(int i=1; i<=n; i++)       {           if(ru[i]==0)out.push(i);       }       //int edg = m;       long long sum = 0;       long long minn = 99999999999;       while(!out.empty())       {           int p = out.top(); out.pop();           minn = min(minn, (long long)p); sum += minn;           int len = op[p].size();           for(int i=0; i<len; i++)           {               ru[op[p][i]]--;               if(ru[ op[p][i] ]==0){out.push(op[p][i]);}           }       }       cout << sum << endl;    }    return 0;}



水波.




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 婴儿一直37度多怎么办 1岁半高烧39度怎么办 反复发烧39度多怎么办 孩子不爱喝水怎么办%3f 8岁儿童不爱喝水怎么办 儿子14岁了不爱说话怎么办 我孩子长得老慢怎么办 老公嫌你烦了怎么办 2岁宝宝吃饭不嚼怎么办 2岁宝宝挑食厌食怎么办 孩子不爱和家长交流怎么办 孩子发烧在医院查不出病因怎么办 宝宝乳牙长歪了怎么办 两岁宝宝不爱吃水果怎么办 两岁宝宝不吃水果怎么办 一岁的宝宝上火了怎么办 吃水果嘴唇肿了怎么办 二岁宝宝不爱吃饭怎么办 小婴儿便秘但不爱喝水怎么办 宝宝只吃水果不吃饭怎么办 一岁宝宝不喜欢吃水果怎么办 1岁宝宝不吃水果怎么办 一岁半宝宝吃水果拉肚子怎么办 大人发烧了怎么办如何退烧 怀孕后不爱吃水果怎么办 不敢吃水果了怕虫怎么办 宝宝发烧38度不出汗怎么办 1岁宝宝喜欢含饭怎么办 3岁宝宝喜欢含饭怎么办 孩子咳嗽发烧怎么办最有效 孩子咳嗽打哈切流鼻涕发烧怎么办 孩子香蕉吃多了怎么办 80多岁老人发烧怎么办 小孩香蕉吃多了怎么办 7个月宝宝缺钙怎么办 宝宝脖子被汗淹到红了脱皮怎么办? 小儿出汗多咳嗽怎么办吃什么 牛高烧不退怎么办最好 猪体温低不吃食怎么办 小孩发烧咳嗽怎么办吃什么药 大晚上发烧39度怎么办