ACM-ICPC实验室20.2.21测试-图论(二)
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测试-图论(二)的更多相关文章
- ACM-ICPC实验室20.2.19测试-图论
B.Harborfan的新年拜访Ⅱ 就是一道tarjan缩点的裸题. 建图比较麻烦 以后遇到这种建图,先用循环把样例实现出来,再对着循环写建图公式 #include<bits/stdc++.h& ...
- 2019年安徽大学ACM/ICPC实验室新生赛(公开赛)D 不定方程
题目链接:https://ac.nowcoder.com/acm/contest/2720/D 题意:对于 ax = by = c ,给出 x, y 求符合条件的 a, b, c 且 c 为最小的解, ...
- ACM-ICPC实验室20.2.22测试-动态规划
C.田忌赛马 直接贪心做就可以~ #include<bits/stdc++.h> using namespace std; ; int a[maxn],b[maxn]; int main( ...
- 【转】lonekight@xmu·ACM/ICPC 回忆录
转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...
- 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 ...
- 2015 ACM / ICPC 亚洲区域赛总结(长春站&北京站)
队名:Unlimited Code Works(无尽编码) 队员:Wu.Wang.Zhou 先说一下队伍:Wu是大三学长:Wang高中noip省一:我最渣,去年来大学开始学的a+b,参加今年区域赛之 ...
- Problem 1002-2017 ACM/ICPC Asia Regional Shenyang Online
网络赛:2017 ACM/ICPC Asia Regional Shenyang Online 题目来源:cable cable cable Problem Description: Connecti ...
- 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 ...
- Java in ACM/ICPC
目录 Java在ACM/ICPC中的特点 在ACM/ICPC中使用Java需要注意的问题 Java与高精度计算 1.Java在ACM/ICPC中的特点 Java的语法和C++几乎相同 Java在执行计 ...
随机推荐
- CSS的模板资源+编辑图像大小
模板资源 源码之家搜登录页面,链接:https://www.mycodes.net/190/10144.htm (或者搜门户网站 模板之家,里面页面更强大!) 编辑图像大小 然 ...
- [CodeIgniter4]讲解-加载静态页
讲解 本教程旨在向您介绍CodeIgniter框架和MVC体系结构的基本原理.它将向您展示如何以逐步的方式构造基本的CodeIgniter应用程序. 在本教程中,您将创建一个基本的新闻应用程序.您将从 ...
- wx: wx.showModal 回调函数中调用自定义方法
一.在回调函数中调用自定义方法: 回调函数中不能直接使用this,需要在外面定义 var that = this 然后 that.自定义的方法.如下: //删除 onDelete: function ...
- 小I选宾馆
小 I 选宾馆 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 小 I 去天津玩啦,一路上,他跟他的同学发生了许多有趣的 ...
- [HNOI2017] 大佬 - DP,BFS,Hash,单调性
这真的是一道综合题.然而感觉A得莫名其妙,交上去的时候其实非常虚,然后就莫名其妙地AC了? 首先我们考虑到,所有和怼有关的操作都是时刻无关的.也就是说,我们把这些操作拆散放到任何时候都对结果不会有影响 ...
- C语言-无符号数与有符号数不为人知的秘密
一.无符号数与有符号数 1.计算机中的符号位 数据类型的最高位用于标识数据的符号 -最高位为1,表明这个数为负数 -最高位为0,表明这个数为正数 #include <stdio.h> in ...
- Tensorflow中multiply()函数与matmul()函数的用法区别
1.tf.multiply()函数:矩阵对应元素相乘 官网定义: multiply(x,y,name=None) 参数: x: 一个类型为:half, float32, float64, uint8, ...
- QQ第三方登录(一)
要实现QQ第三方登陆 这就需要QQ方面的支持. 首先 我们需要在QQ开发者网站上注册,https://connect.qq.com/index.html 登陆之后点击应用管理,正常情况下我们是未提交 ...
- C++-POJ2777-Count Color[线段树][lazy标记][区间修改]
分析:https://www.bilibili.com/read/cv4777102 #include <cstdio> #include <algorithm> using ...
- windows下tesseract-ocr的安装及使用
For CentOS 7 run the following as root: yum-config-manager --add-repo https://download.opensuse.org/ ...