题目链接:

题目

Graph Construction

Time limit: 3.000 seconds

问题描述

Graph is a collection of edges E and vertices V. Graph has a wide variety of applications in computer.

There are different ways to represent graph in computer. It can be represented by adjacency matrix or

by adjacency list. There are some other ways to represent graph. One of them is to write the degrees

(the numbers of edges that a vertex has) of each vertex. If there are n vertices then n integers can

represent that graph. In this problem we are talking about simple graph which does not have same

endpoints for more than one edge, and also does not have edges with the same endpoint.

Any graph can be represented by n number of integers. But the reverse is not always true. If you

are given n integers, you have to find out whether this n numbers can represent the degrees of n vertices

of a graph.

输入

Each line will start with the number n (≤ 10000). The next n integers will represent the degrees of n

vertices of the graph. A ‘0’ input for n will indicate end of input which should not be processed.

输出

If the n integers can represent a graph then print ‘Possible’. Otherwise print ‘Not possible’. Output

for each test case should be on separate line.

样例

input

4 3 3 3 3

6 2 4 5 5 2 1

5 3 2 3 2 1

0

output

Possible

Not possible

Not possible

题意

给你每个顶点的度数,问能不能组成无环无平行边的无向图。

题解

贪心做:

从最大度数的那个点(假设度数是x)做开始,在剩下的数中选出度最大的前x个数,如果有哪个节点的度数为0则不可能构成图,否则把这些节点度数减1继续做。 直到所有的点的度数都为0。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std; int main(){
int n;
while(scanf("%d",&n)==1&&n){
priority_queue<int> pq;
int x;
for(int i=0;i<n;i++){
scanf("%d",&x);
pq.push(x);
}
bool su=1;
while(!pq.empty()){
int u=pq.top(); pq.pop();
if(u==0) break;
vector<int> pool;
for(int i=0;i<u;i++){
if(pq.empty()){
su=0; break;
}
int v=pq.top(); pq.pop();
if(v==0){
su=0; break;
}
v--;
pool.push_back(v);
}
if(!su) break;
for(int i=0;i<pool.size();i++){
pq.push(pool[i]);
}
}
if(su) puts("Possible");
else puts("Not possible");
}
return 0;
}

UVA 10720 Graph Construction 贪心+优先队列的更多相关文章

  1. UVa 10720 - Graph Construction(Havel-Hakimi定理)

    题目链接: 传送门 Graph Construction Time Limit: 3000MS     Memory Limit: 65536K Description Graph is a coll ...

  2. UVa 10720 - Graph Construction

    题目大意:给n个整数, 分别代表图中n个顶点的度,判断是否能构成一张图. 看到这个题后,除了所有数之和应该为偶数之外,没有别的想法了,只好在网上搜解题报告了.然后了解了Havel-Hakimi定理.之 ...

  3. UVA 11134 - Fabled Rooks(贪心+优先队列)

    We would like to place  n  rooks, 1 ≤  n  ≤ 5000, on a  n×n  board subject to the following restrict ...

  4. hihoCoder 1309:任务分配 贪心 优先队列

    #1309 : 任务分配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定 N 项任务的起至时间( S1, E1 ), ( S2, E2 ), ..., ( SN,  ...

  5. C. Playlist Educational Codeforces Round 62 (Rated for Div. 2) 贪心+优先队列

    C. Playlist time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  6. HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解

    思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...

  7. uva 1615 高速公路(贪心,区间问题)

    uva 1615 高速公路(贪心,区间问题) 给定平面上n个点和一个值D,要求在x轴上选出尽量少的点,使得对于给定的每个点,都有一个选出的点离它的欧几里得距离不超过D.(n<=1e5) 对于每个 ...

  8. 贪心+优先队列 HDOJ 5360 Hiking

    题目传送门 /* 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小,该人能 被邀 ...

  9. [POJ1456]Supermarket(贪心 + 优先队列 || 并查集)

    传送门 1.贪心 + 优先队列 按照时间排序从前往后 很简单不多说 ——代码 #include <queue> #include <cstdio> #include <i ...

随机推荐

  1. OpenFiler安装与基本配置

    一.            安装篇 1.      插入安装盘 2.      选择键盘输出 3.      对硬盘进行分区 4.      删除所有数据并重新分区 5.      配置IP地址等信息 ...

  2. OSPF路由汇总和默认路由设置

    目标 掌握OSPF路由汇总的配置 掌握OSPF默认路由的配置 一.——区域间汇总 配置IP,R2四个环回口 R1(config)#inter s1/0 R1(config-if)#ip add 200 ...

  3. SpringMVC 实现邮件发送功能

    配置spring-mail.xml <?xml version="1.0" encoding="UTF-8"?><beans xmlns=&q ...

  4. UI1_UITableViewSearchController

    // UI1_UITableViewSearchController // // Created by zhangxueming on 15/7/15. // Copyright (c) 2015年 ...

  5. WCF之安全

    传输安全. 点对点,对整个消息进行加密,性能损失,当中间者不安全时,消息也就不安全了. WCF中支持传输安全和消息安全模式. 通过配置和绑定来设置.<Security Mode =Transct ...

  6. log4j自动生成日志文件配置

    生成文件到默认位置: #生成日志文件 #log4j.appender.systemFile=org.apache.log4j.RollingFileAppender #按天生成 log4j.appen ...

  7. 【风马一族_Android】第4章Android常用基本控件

    第4章Android常用基本控件 控件是Android用户界面中的一个个组成元素,在介绍它们之前,读者必须了解所有控件的父类View(视图),它好比一个盛放控件的容器. 4.1View类概述 对于一个 ...

  8. OrCAD Capture CIS与Allegro交互布局

    激活OrCAD与Allegro的交互程序 1. 打开原题图,Options->Preference在Miscellaneous里勾选 2. 同时打开OrCAD原理图设计界面及Allegro PC ...

  9. TextView文字排版问题:

    本文转载自:http://blog.sina.com.cn/s/blog_821e2bb101011803.html textview自动换行导致混乱的原因----半角字符与全角字符混乱所致!一般情况 ...

  10. kibana去掉丑陋的basic验证框,用自定义验证代替。

    最近在改写kibana,碰到了验证登录的问题.问题是这样子的,nginx设置了basic认证,然后客户端访问kibana的时候总是会弹出登录框,输入用户名和密码,现在要改写这个登陆框,用bootstr ...