吃在工大
来源:互联网 发布:数据质量问题分类 编辑:程序博客网 时间:2024/04/27 14:36
吃在工大
题目描述:
Description
JH和他的好朋友YZ两名程序员回访母校合工大,
JH又是一名典型吃货,于是决定在工大食堂好好吃一段日子,
但是,面对美食诱惑:黄焖鸡、风暴干锅、麻辣香锅、
奥尔良烤翅…由于时间有限,JH不知道哪顿饭吃哪个菜好。
于是YZ为了帮助他解决这个问题,也顺便考考他,给他出了一个问题:“黄焖鸡必须在干锅花菜前面吃,干锅牛肉必须在干锅鱿鱼前面吃….你按这个要求下,就知道吃的顺序啦”。JH抓抓头,分分钟写了个程序搞定,现在,让你来写写看?输出一组JH符合条件下吃的食物的序列。
假设JH每顿只吃一种食物,且每顿吃的都不同,食物编号1到N。
Input
先输入一个整数T,表示T(T<50)组数据。
每组数据第一行输出一个整数,N,M,分别表示有N种食物,总共有M个约束条件,接下来M行每行输入两个正整数a,b(n>=a>0,n>=b>0),表示食物a必须在食物b之前吃。
Output
各组数据输出答案占一行,输出一组符合条件的序列(要求输出字典序最大的那一组),如果答案不存在,输出“-1”。
Sample Input
1
4 3
1 2
2 3
4 3
Sample Output
4 1 2 3
题意分析:现在有n种食物,m种约定。a,b表示食物a必须在食物b之前吃,求吃食物的序列,并且要求输出字典序最大的一组,如果答案不存在,则输出“-1”。这是一道很明显的拓扑排序题目,比赛的时候,一下就发现了,然后就开始敲,敲完后发现,有些不对,这个图可能不包含所有的顶点,然后就继续想,真是傻啊!!!把没有出现在图中的顶点(也就是没有约束的顶点)的入度设置为0,这样就可以把这些顶点在第一遍的时候放入优先队列了。然后就是拓扑排序就ok了!
代码:
#include<stdio.h>#include<iostream>#include<algorithm>#include<queue>#include<vector>#include<string.h>using namespace std;const int N =10000;int n,m,L[N],du[N];vector<int>g[N];bool toposort(){ int tot=0; memset(du,0,sizeof(du)); for(int i=0;i<n;i++) for(int j=0;j<g[i].size();j++) du[g[i][j]]++; priority_queue<int>que; for(int i=0;i<n;i++) if(du[i]==0) que.push(i); while(!que.empty()) { int x=que.top(); que.pop(); L[tot++]=x; for(int i=0;i<g[x].size();i++) { int u=g[x][i]; du[u]--; if(!du[u]) que.push(u); } } if(tot==n)return true; else return false;}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(int i=0;i<n;i++) g[i].clear(); while(m--) { int a,b; scanf("%d%d",&a,&b); g[a-1].push_back(b-1); } bool ans=toposort(); if(!ans) printf("-1\n"); else { for(int i=0;i<n;i++) if(i==n-1) printf("%d\n",L[i]+1); else printf("%d ",L[i]+1); } } return 0;}
0 0
- 吃在工大
- 2016京胜杯-吃在工大
- 安徽省2016“京胜杯”程序设计大赛_F_吃在工大
- 吃在深圳
- 吃在西安
- 吃在大连
- 吃在海底捞
- 吃在北京
- 吃了个大西瓜
- 吃在深圳+东西冲
- 吃鸡蛋的三大饮食禁忌
- 有关“吃”的十大健康杀手
- 吃蔬菜的十大误区
- 吃花生5大绝妙益处
- 说在端午,吃在端午
- 吃!
- 吃
- 去年这个时候的凌晨和上大好友李睿还在杭州吃外面的夜排挡呢,那次两天一夜的二人行还挺有意思的
- JNI调用Java方法
- Hadoop2.x实战:Hadoop安装与配置
- HDU-2612-Find a way(BFS)
- KVC/KVO原理及应用(上)
- 11-CSS盒子模型
- 吃在工大
- mssql查看语句执行情况
- 偶尔写点东西,暖暖文笔!
- 【leetcode】146. LRU Cache【H】【9】
- 前两天使用PHP的strtotime的时候遇到了2038的问题
- iOS网络-05-AFNetwoking原理及常用操作
- Apache 虚拟主机 VirtualHost 配置
- C#学习笔记之向Xml文档追加信息
- git操作指南