题目链接

最短路构造题三连:这道题,HDU4903,SRM590 Fox And City。


\(Description\)

给定一张\(n\)个点\(m\)条边的有向图,每条边的边权在\([1,n]\)之间。记\(d[i]\)为\(1\)到\(i\)的最短路。你需要对每条边确定一个边权,使得存在一个\(i\in[2,n]\),满足\(d[1]\lt d[2]\lt...d[i]\gt d[i+1]\gt...d[n]\)。

输出方案(每条边的边权)。输入保证有解。

\(n,m\leq10^5\)。

\(Solution\)

\(d[1]=0\),考虑\(d[i]=1\)的点有哪些。那要么是\(2\),要么是\(n\),但一定存在边\(1\to i\)。

\(d[i]=2,3...\)的点同理。

所以标记\(1\)能到的所有点,然后维护两个指针\(l=2,r=n\)。从\(l,r\)中选一个标记过的,令其\(d[i]=++now\),然后标记能到的点,往中间移动这个指针即可。

因为保证有解,所以每次至少有一个指针会移动。

输出答案时对于边\((i,j)\),输出\(|d[i]-d[j]|\)即可。

会有重边,不要输出\(0\)就好了。

确实是这样的=-=


//187MS	3328K
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#define gc() getchar()
#define MAXIN 500000
//#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
typedef long long LL;
const int N=1e5+5; int Enum,H[N],nxt[N],fr[N],to[N],dis[N];
bool vis[N];
char IN[MAXIN],*SS=IN,*TT=IN; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-48,c=gc());
return now;
}
inline void AE(int v,int u)//opposite
{
to[++Enum]=v, fr[Enum]=u, nxt[Enum]=H[u], H[u]=Enum;
} int main()
{
for(int T=read(); T--; )
{
int n=read(),m=read();
Enum=0, memset(H,0,n+1<<2), memset(vis,0,n+1);
for(int i=1; i<=m; ++i) AE(read(),read());
for(int i=H[1]; i; i=nxt[i]) vis[to[i]]=1;
for(int l=2,r=n,now=1; l<=r; )
{
int x=vis[l]?l++:r--; dis[x]=now++;
for(int i=H[x]; i; i=nxt[i]) vis[to[i]]=1;
}
for(int i=1; i<=m; ++i) printf("%d\n",fr[i]==to[i]?1:std::abs(dis[fr[i]]-dis[to[i]]));
} return 0;
}

HDU.5385.The path(构造)的更多相关文章

  1. hdu 5385 The path

    http://acm.hdu.edu.cn/showproblem.php?pid=5385 题意: 给定一张n个点m条有向边的图,构造每条边的边权(边权为正整数),令d(x)表示1到x的最短路,使得 ...

  2. 2015 Multi-University Training Contest 8 hdu 5385 The path

    The path Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: 5 ...

  3. 贪心 HDOJ 5385 The Path

    题目传送门 /* 题意:给一张图和一些有向边,问如何给边赋值使得d1 < d2 < .. < dx > ,,,< ddn 贪心:左边从2开始,右边从n开始,每次选择未标记 ...

  4. hdu 1973 Prime Path

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1973 Prime Path Description The ministers of the cabi ...

  5. HDU 5573 Binary Tree 构造

    Binary Tree 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5573 Description The Old Frog King lives ...

  6. hdu 3631 Shortest Path(Floyd)

    题目链接:pid=3631" style="font-size:18px">http://acm.hdu.edu.cn/showproblem.php?pid=36 ...

  7. [HDU 1973]--Prime Path(BFS,素数表)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1973 Prime Path Time Limit: 5000/1000 MS (Java/Others ...

  8. hdu 5015 233 Matrix(构造矩阵)

    http://acm.hdu.edu.cn/showproblem.php?pid=5015 由于是个二维的递推式,当时没有想到能够这样构造矩阵.从列上看,当前这一列都是由前一列递推得到.依据这一点来 ...

  9. HDU 5813 Elegant Construction 构造

    Elegant Construction 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5813 Description Being an ACMer ...

随机推荐

  1. idea搭建springboot

     1.创建新项目 2.继续项目配置 Name:项目名称Type:我们是Maven构建的,那么选择第一个Maven ProjectPackaging:打包类型,打包成Jar文件Java Version: ...

  2. echarts 修改y轴name的样式

    option = {    xAxis: {        type: 'category',        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sa ...

  3. Django_restframework+vue解决跨域问题

    1. 安装 pip3 install django-cors-headers 2.在settings.py里设置 INSTALLED_APPS = ( ... 'corsheaders', ... ) ...

  4. pkuseg:一个多领域中文分词工具包

    pkuseg简单易用,支持细分领域分词,有效提升了分词准确度. 目录 主要亮点 编译和安装 各类分词工具包的性能对比 使用方式 相关论文 作者 常见问题及解答 主要亮点 pkuseg具有如下几个特点: ...

  5. Java Web之Cookie、Session

    讲Cookie和Seesion之前,先讲一下HTTP连接其实是无序的,服务器不知道是谁在访问它.现在我们来实现一个简单的邮箱功能. 要求: 1.登录页面登录之后看到收件箱和欢迎我 2.点击收件箱看到几 ...

  6. VMWare的host-only/bridged/NAT连接图文介绍

    1 VMware简介 VMWare虚拟机软件是一个“虚拟PC”软件,它使我们可以在一台机器上同时运行二个或更多Windows.Linux等系统. 如果我们需要使用多个系统的话,传统的方式有两种: .使 ...

  7. react实战项目开发(1) 搭建react开发环境初始化项目(Create-react-app)

    前言 Create React App npm install -g create-react-app create-react-app my-app cd my-app npm start 执行命令 ...

  8. 我是怎么知道 PTHREAD_MUTEX_INITIALIZER 是什么鬼东西的 ??

    很简单 写这么几句代码 1 #include <pthread.h> 2 3 PTHREAD_MUTEX_INITIALIZER cpp 一解析就出来了 1714 # 238 " ...

  9. mysql中使用enum,如何获取所有可能的值

    SELECT column_type FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = "数据库名" AND DATA_T ...

  10. visual studio code运行时报错,Cannot find module 'webpack'

    前言 今天运行是visual studio code时,报了一个错误Cannot find module 'webpack' ,网上找了很多方法都没解决.下面一起来看看怎么解决 正文 报错: npm ...