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在执行计 ...
随机推荐
- POJ3723(最小生成树,负权)
题目描述 温迪有一个国家,他想建立一支军队来保护他的国家.他收留了N个女孩和M个男孩,想把她们收留成他的士兵.征兵无特权,必须交纳一万元.女孩和男孩之间有一些关系,温迪可以利用这些关系来降低他的成本. ...
- LaTeX技巧012:LaTeX 插图加载宏包
LaTeX 插图加载宏包.支持 LaTeX - DVIPDFMx; pdfLaTeX; XeLaTeX 三种编译方式,支持 eps/pdf/jpg/png 等图片格式. % Put this snip ...
- 《深入理解java虚拟机》读书笔记三——第四章
第四章 虚拟机性能监控与故障处理工具 1.JDK命令行工具 jps命令: 作用:列出正在运行的虚拟机进程. 格式:jps [option] [hostid] 选项:-q 只输出LVMID(Local ...
- 多线程启动selenium,报NameError: name '__file__' is not defined
将__file__加上单引号就解决了: # 获取当前文件名,用于创建模型及结果文件的目录 file_name = os.path.basename('__file__').split('.') ...
- 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。”
出现场景: From1中事件B绑定在事件A,事件A由工厂模式下的设备产生,当离开Form1时,设备中的事件A仍然会触发事件B,此时就会导致如上问题 原因(个人理解): 1.Form1已经被销毁了,但仍 ...
- (转) 统计在从1到n的正整数中1出现的次数
1. 题目描述 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次. 2. 题目来源 第一次看到是在 ...
- Activiti工作流学习之SpringBoot整合Activiti5.22.0实现在线设计器(二)
一.概述 网上有很多关于Eclipse.IDEA等IDE插件通过拖拽的方式来画工作流程图,个人觉得还是不够好,所以花点时间研究了一下Activiti在线设计器,并与SpringBoot整合. 二.实现 ...
- vue使用kkfileview文件预览功能
1.环境要求: java 1.8+ 2.部署运行: 本机以及虚拟机上运行: 1.从https://gitee.com/kekingcn/file-online-preview/releases地址下载 ...
- 【Python】成绩等级判断
score=eval(input("请输入成绩:\n")) if score>=60: grade="D" elif score>=70: grad ...
- TD - bootsrap版本tab替换
TD - bootsrap版本tab替换 dijit.layout.TabContainer ----> bootstrap.layout.TabContainer dijit.layout.C ...