A.患者的编号

给出一个有向图,要求你输出字典序最小的拓扑排序。

常规拓扑排序是做不了的,正解是反向建图,同时用大根堆的优先队列维护,保证每次优先访问编号大的结点,再反向输出~

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+;
vector<int> g[maxn];
vector<int> topOrder;
int inDegree[maxn];
int N,M,x,y;
void topSort () {
priority_queue<int> q;
for (int i=;i<=N;i++)
if (inDegree[i]==) q.push(i);
while (!q.empty()) {
int u=q.top();
q.pop();
topOrder.push_back(u);
for (int i=;i<g[u].size();i++) {
int v=g[u][i];
if (--inDegree[v]==)
q.push(v);
}
}
}
int num[maxn];
int main () {
while(~scanf("%d %d",&N,&M)) {
fill(inDegree,inDegree+maxn,);
topOrder.clear();
for (int i=;i<maxn;i++) g[i].clear();
for (int i=;i<M;i++) {
scanf("%d %d",&x,&y);
g[y].push_back(x);
inDegree[x]++;
}
topSort();
for (int i=;i<topOrder.size();i++) {
num[topOrder[i]]=N-i;
}
for (int i=;i<=N;i++) {
if (i!=) printf (" ");
printf ("%d",num[i]);
}
printf ("\n");
}
return ;
}

D.传送门

特殊的,点的权值也可以作为最小生成树的边,建树时贪心操作即可~

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=;
const ll inf=1e18;
ll g[maxn][maxn];
ll w[maxn];
int visit[maxn];
ll d[maxn];
ll c[maxn];
int N;
ll prim (int s) {
fill (d,d+maxn,inf);
fill (visit,visit+maxn,);
d[s]=w[s];
ll ans=;
for (int i=;i<=N;i++) {
int u=-;ll mmin=inf;
for (int j=;j<=N;j++)
if (!visit[j]&&d[j]<mmin) {
u=j;
mmin=d[j];
}
if (u==-) return -;
visit[u]=;
ans+=d[u];
//printf ("%d\n",d[u]);
for (int v=;v<=N;v++)
if (!visit[v]&&v!=u) d[v]=min(w[v],min(d[v],g[u][v]));
}
return ans;
}
struct node {
int x,y;
}Node[maxn];
int main () {
scanf("%d",&N);
for (int i=;i<=N;i++)
for (int j=;j<=N;j++) g[i][j]=inf;
for (int i=;i<=N;i++) scanf("%d %d",&Node[i].x,&Node[i].y);
for (int i=;i<=N;i++) scanf("%lld",&w[i]);
for (int i=;i<=N;i++) scanf("%lld",&c[i]);
for (int i=;i<=N;i++) {
for (int j=i+;j<=N;j++) {
ll dis=(c[i]+c[j])*(abs(Node[i].x-Node[j].x)+abs(Node[i].y-Node[j].y));
//printf ("%lld\n",dis);
g[i][j]=g[j][i]=dis;
}
}
int u=-;
ll mmin=inf;
for (int i=;i<=N;i++) {
if (w[i]<mmin) {
mmin=w[i];u=i;
}
}
ll ans=prim(u);
printf ("%lld\n",ans);
return ;
}

ACM-ICPC实验室20.2.21测试-图论(二)的更多相关文章

  1. ACM-ICPC实验室20.2.19测试-图论

    B.Harborfan的新年拜访Ⅱ 就是一道tarjan缩点的裸题. 建图比较麻烦 以后遇到这种建图,先用循环把样例实现出来,再对着循环写建图公式 #include<bits/stdc++.h& ...

  2. 2019年安徽大学ACM/ICPC实验室新生赛(公开赛)D 不定方程

    题目链接:https://ac.nowcoder.com/acm/contest/2720/D 题意:对于 ax = by = c ,给出 x, y 求符合条件的 a, b, c 且 c 为最小的解, ...

  3. ACM-ICPC实验室20.2.22测试-动态规划

    C.田忌赛马 直接贪心做就可以~ #include<bits/stdc++.h> using namespace std; ; int a[maxn],b[maxn]; int main( ...

  4. 【转】lonekight@xmu·ACM/ICPC 回忆录

    转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...

  5. hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...

  6. 2015 ACM / ICPC 亚洲区域赛总结(长春站&北京站)

    队名:Unlimited Code Works(无尽编码)  队员:Wu.Wang.Zhou 先说一下队伍:Wu是大三学长:Wang高中noip省一:我最渣,去年来大学开始学的a+b,参加今年区域赛之 ...

  7. Problem 1002-2017 ACM/ICPC Asia Regional Shenyang Online

    网络赛:2017 ACM/ICPC Asia Regional Shenyang Online 题目来源:cable cable cable Problem Description: Connecti ...

  8. hduoj 4715 Difference Between Primes 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4715 Difference Between Primes Time Limit: 2000/1000 MS (J ...

  9. Java in ACM/ICPC

    目录 Java在ACM/ICPC中的特点 在ACM/ICPC中使用Java需要注意的问题 Java与高精度计算 1.Java在ACM/ICPC中的特点 Java的语法和C++几乎相同 Java在执行计 ...

随机推荐

  1. CSS的模板资源+编辑图像大小

    模板资源 源码之家搜登录页面,链接:https://www.mycodes.net/190/10144.htm        (或者搜门户网站 模板之家,里面页面更强大!) 编辑图像大小      然 ...

  2. [CodeIgniter4]讲解-加载静态页

    讲解 本教程旨在向您介绍CodeIgniter框架和MVC体系结构的基本原理.它将向您展示如何以逐步的方式构造基本的CodeIgniter应用程序. 在本教程中,您将创建一个基本的新闻应用程序.您将从 ...

  3. wx: wx.showModal 回调函数中调用自定义方法

    一.在回调函数中调用自定义方法: 回调函数中不能直接使用this,需要在外面定义 var that = this 然后 that.自定义的方法.如下: //删除 onDelete: function ...

  4. 小I选宾馆

    小 I 选宾馆 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 小 I 去天津玩啦,一路上,他跟他的同学发生了许多有趣的 ...

  5. [HNOI2017] 大佬 - DP,BFS,Hash,单调性

    这真的是一道综合题.然而感觉A得莫名其妙,交上去的时候其实非常虚,然后就莫名其妙地AC了? 首先我们考虑到,所有和怼有关的操作都是时刻无关的.也就是说,我们把这些操作拆散放到任何时候都对结果不会有影响 ...

  6. C语言-无符号数与有符号数不为人知的秘密

    一.无符号数与有符号数 1.计算机中的符号位 数据类型的最高位用于标识数据的符号 -最高位为1,表明这个数为负数 -最高位为0,表明这个数为正数 #include <stdio.h> in ...

  7. Tensorflow中multiply()函数与matmul()函数的用法区别

    1.tf.multiply()函数:矩阵对应元素相乘 官网定义: multiply(x,y,name=None) 参数: x: 一个类型为:half, float32, float64, uint8, ...

  8. QQ第三方登录(一)

    要实现QQ第三方登陆 这就需要QQ方面的支持. 首先  我们需要在QQ开发者网站上注册,https://connect.qq.com/index.html 登陆之后点击应用管理,正常情况下我们是未提交 ...

  9. C++-POJ2777-Count Color[线段树][lazy标记][区间修改]

     分析:https://www.bilibili.com/read/cv4777102 #include <cstdio> #include <algorithm> using ...

  10. windows下tesseract-ocr的安装及使用

    For CentOS 7 run the following as root: yum-config-manager --add-repo https://download.opensuse.org/ ...