题意:给你n个节点,m对优先级关系,a[i] b[i]代表a[i]的优先级比b[i]高,现在问你至少需要前多少对关系就能确定所有节点的优先级;

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
typedef long long ll;
typedef unsigned long long Ull;
#define MM(a,b) memset(a,b,sizeof(a));
const double eps = 1e-10;
const int inf = 0x3f3f3f3f;
const double pi=acos(-1);
const int mod=100000000;
ll max(ll a,ll b)
{return a>b?a:b;};
int min(int a,int b)
{return a<b?a:b;}; vector<int> G[100005];
int deg[100005],mp[100005],a[100005],b[100005];
int main()
{
int n,m,u,v;
while(~scanf("%d %d",&n,&m))
{
for(int i=1;i<=n;i++) G[i].clear();
MM(deg,0);
for(int i=1;i<=m;i++)
{
scanf("%d %d",&a[i],&b[i]);
G[b[i]].push_back(a[i]);
deg[a[i]]++;
}
queue<int> q;
for(int i=1;i<=n;i++) if(deg[i]==0) q.push(i);
int flag=1;
while(q.size())
{
if(q.size()>1)
{
flag=0;
break;
}
int u=q.front();q.pop();
for(int i=0;i<G[u].size();i++)
{
int v=G[u][i];
deg[v]--;
if(deg[v]==0) q.push(v);
mp[v]=u;
}
}
if(!flag) printf("-1\n");
else {
int cnt=0;
for(int i=1;i<=m;i++)
{
if(mp[a[i]]==b[i]) cnt++;
if(cnt==n-1) {printf("%d\n",i);break;}
}
}
}
return 0;
}

  分析:很好的一道题,题目要求的其实就是什么时候能够找到一条从优先级最低的到

最高的一条路径,那么刚开始优先级最低的肯定是入度为0的点,接下来次底的呢?显然把与

最低的点相邻的边都删除了之后,入度为0的点就是次低的,并且只能有一个(因为存在一条

上述路径),若有>1个入度位0的点则无解,因为不存在合法路径,找到路径之后再枚举输入的边就好(因为两个节点之间至多一条边)

TTTTTTTTTTTTTT CF 645D 点的优先级的更多相关文章

  1. TTTTTTTTTTTTTT CF 95 B 构造4,7幸运数字 贪心 构造 string

    B. Lucky Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  2. CSS选择器及其优先级

    一:一些普通的选择器 <!DOCTYPE html> <html> <head lang="en"> <meta charset=&quo ...

  3. Android中通过进程注入技术改动广播接收器的优先级

    前言 这个周末又没有吊事,在家研究了怎样通过进程的注入技术改动广播接收器的优先级.关于这个应用场景是非常多的.并且也非常重要.所以就非常急的去fixed了. Android中的四大组件中有一个广播:B ...

  4. CF 222 (DIV 1)

    A: 我是bfs出一颗树,然后删掉树后面的k个结点. 其实也可以直接bfs出一块连通的s - k个点,其余的.打X就可以了. 很水的题目. /* *************************** ...

  5. VxWorks实验六 基于优先级的抢占式调度及实验的源程序和实验步骤

    基于优先级的抢占式调度及实验的源程序和实验步骤 1 实验目的    1.学习并验证基于优先级的抢占式调度2 实验内容    在实验一建立的 project 中,创建3 个任务,对这三个任务使用基于优先 ...

  6. [题解向] CF#536Div2の题解 E&F

    \(0x01~~Preface\) \(emmm\)这次CF本身打的很顺畅,但是居然unrated了--咕咕咕咕 这是头一次CF有比赛我全部题目都做了--可喜可贺可喜可贺233 简单总结一下前面四道题 ...

  7. Android中通过进程注入技术修改广播接收器的优先级

    前言 这个周末又没有吊事,在家研究了如何通过进程的注入技术修改广播接收器的优先级,关于这个应用场景是很多的,而且也很重要,所以就很急的去fixed了. Android中的四大组件中有一个广播:Broa ...

  8. Linux资源管理-IO优先级

    前一篇博客介绍了利用 cgroup 来控制进程的 CPU和内存使用情况, 这次补上使用 cgroup 来控制进程的IO优先级的方法. 前提条件 如果想控制进程的IO优先级, 需要内核的支持, 内核编译 ...

  9. Cocos2dx中线程优先级

    Cocos2dx中线程优先级问题 不论是ios还是android,遇到耗时的任务都要另起线程处理,否则程序不能及时用户的反馈.游戏中如果一圈循环不能在1/frameRate(帧率是30则1/30)秒内 ...

随机推荐

  1. 【转贴】SQL Server中关于跟踪(Trace)那点事

    SQL Server中关于跟踪(Trace)那点事 https://www.cnblogs.com/zhijianliutang/p/4113911.html 作者很牛B.. 前言 一提到跟踪俩字,很 ...

  2. (5.5)mysql高可用系列——MySQL半同步复制(实践)

    关键词,mysql半同步复制 [0]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复 ...

  3. 在Ubuntu上安装Hbase

    1.下载hbase2.0.5 解压缩并改名为hbase目录,放到/usr/local下(注意权限) sudo mv ~/hbase-2.0.5 /usr/local/hbase 2.修改目录所有者 / ...

  4. idea中模块累积编写

    idea中新建Empty Project名为myproject,新建模块mymodel1 要想复制该模块,再在该模块的基础上开发怎么弄? 选中该模块右键Copy,在Project空白区域右键Paste ...

  5. CSP 2019 RP++

    读入:(转自:chuyds's Blog 法一: while(scanf("%d",&a)!=EOF) 法二: while(cin>>n) 法三: while( ...

  6. XPath读取xml文件

    1.创建解析工厂 2.创建解析器 3.读xml文件,生成w3c.docment对象树 4.创建XPath对象 5.通过路径查找对象 例子: import javax.xml.parsers.Docum ...

  7. python_操作MySQL 初解 之__<类方法调用并 增-删-改-查>

    文件一: 调用(sqls文件) # 导入模块 import pymysql from sqls import * # 创建类 class KaoShi(object): # 初始化 def __ini ...

  8. CVE-2018-20169漏洞学习

    简介 在4.19.9之前的Linux内核中发现了一个问题.USB子系统在读取与驱动程序/ USB /core/usb.c中的_usb_get_extra_descriptor相关的额外描述符时错误地检 ...

  9. js日期相关方法

    /** * ===================================== * 日期相关方法 * ===================================== */ ;(fu ...

  10. c# 转换Image为Icon

    /// <summary> /// 转换Image为Icon /// </summary> /// <param name="image">要转 ...