小Y的炮
【存代码】
#include<bits/stdc++.h>
#define N 1000001
#define MAXN 100001
using namespace std;
int n,m,Mo,h1,top,h,t,ans;
int ru[N],x[N],y[N],w1[N],to[N];
int p[MAXN],w2[MAXN],x2[MAXN];
int es[MAXN],xy[MAXN],f[MAXN];
int df[MAXN],wu[MAXN],st[MAXN],cn[MAXN],rst[MAXN];
int h2,cnt,u,ex;
void Build(int x,int y){
h1++;
w1[h1]=p[x];
p[x]=h1;
to[h1]=y;
}
bool cmp(int a,int b){
if(x[a]!=x[b])
return x[a]<x[b];
else
return y[a]<y[b];
}
void tar(int xx){
df[xx]=wu[xx]=++ex;
st[++top]=xx;
for(int i=p[xx];i;i=w1[i]){
if(!df[to[i]]){
tar(to[i]);
wu[xx]=min(wu[xx],wu[to[i]]);
}
else
if(!cn[to[i]])
wu[xx]=min(wu[xx],df[to[i]]);
}
if(wu[xx]==df[xx]){
cn[xx]=++cnt;xy[cnt]++;
while(st[top]!=xx){
cn[st[top]]=cnt;
top--;
xy[cnt]++;
}
top--;
}
}
int main(){
scanf("%d%d%d",&n,&m,&Mo);
for (int i=;i<=m;i++){
scanf("%d%d",&x[i],&y[i]);
Build(x[i],y[i]);
}
for (int i=;i<=n;i++)
if (!df[i])
tar(i);
for (int i=;i<=m;i++){
ru[i]=i;
x[i]=cn[x[i]];
y[i]=cn[y[i]];
}
sort(ru+,ru++m,cmp);
h1=;
memset(p,,sizeof(p));
for (int i=;i<=m;i++)
if((x[ru[i]]!=y[ru[i]])&&(x[ru[i]]!=x[ru[i-]]||y[ru[i]]!=y[ru[i-]])){
//if (x[ru[i]]!=y[ru[i]])
//if (x[ru[i]]!=x[ru[i-1]]||y[ru[i]]!=y[ru[i-1]]){
w2[y[ru[i]]]++;
Build(x[ru[i]],y[ru[i]]);
}
for (int i=;i<=cnt;i++)
if (!w2[i]){
//t++;
rst[++t]=i;
f[i]=xy[i];
x2[i]=;
if (f[ans]<f[i])
ans=i;
} while (h<t){
h++;
u=rst[h];
for (int k=p[u];k;k=w1[k]){
w2[to[k]]--;
//f[to[k]=min(f[to[k]],f[u]+xy[to[k]);
if (f[to[k]]<f[u]+xy[to[k]]){
f[to[k]]=f[u]+xy[to[k]];
x2[to[k]]=;
if (f[ans]<f[to[k]])
ans=to[k];
}
if (f[to[k]]==f[u]+xy[to[k]])
x2[to[k]]=(x2[to[k]]+x2[u])%Mo;
if (!w2[to[k]])
rst[++t]=to[k];
}
}
for(int i=;i<=n;i++)
if (f[i]==f[ans])
h2=(h2+x2[i])%Mo;
printf("%d\n",f[ans]);
printf("%d",h2);
return ;
}
小Y的炮的更多相关文章
- 【贪心】小Y的炮[cannon]题解
模拟赛的题目,做的时候由于第二题表打太久了,只剩下40分钟,想都没想就写了一个爆搜20分... 这道题单调性很关键,下面会解释 P.S.解释在代码里 #include<cstdio> #i ...
- 小Y的难题
Font Size:Aa Aa Aa Description 近期小Y迷上了数学,总是在思考各种数学问题.有一天,他不小心把墨水洒在草稿纸上.他如今能看到的是"2?3?1?4"(? ...
- D - 小Y上学记——要迟到了!
D - 小Y上学记——要迟到了! Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- C - 小Y上学记——认识新同学
C - 小Y上学记——认识新同学 Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- B - 小Y上学记——小Y的玩偶
B - 小Y上学记——小Y的玩偶 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- A - 小Y上学记——修学分
A - 小Y上学记——修学分 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) S ...
- 【luogu P4007 清华集训2017】小Y和恐怖奴隶主
题目背景 “A fight? Count me in!” 要打架了,算我一个. “Everyone, get in here!” 所有人,都过来! 题目描述 小 Y 是一个喜欢玩游戏的 OIer.一天 ...
- 【luoguP4006 清华集训2017】小Y和二叉树
题目描述 小 Y 是一个心灵手巧的 OIer,她有许多二叉树模型. 小 Y 的二叉树模型中,每个结点都具有一个编号,小 Y 把她最喜欢的一个二叉树模型挂在了墙上,树根在最上面,左右子树分别在树根的左下 ...
- 【luogu P4005 清华集训2017】小Y和地铁
题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...
随机推荐
- AngularJS路由使用案例
AngularJS路由使用案例: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- 虚拟机的ip地址为什么会发生变化
因为虚拟机在NAT模式下由Vmware8虚拟网卡提供虚拟机的IP分配,网桥模式下由Vmware1来提供IP分配.它们都相当于 一个小型的DHCP服务器,除非改动虚拟机的网络连接方式,或动了虚拟网卡服务 ...
- 不停机修改线上 MySQL 主键字段 以及其带来的问题和总结思考
起因: 线上 user 数据库没有自增字段,数据量已经达到百万级.无论是给离线仓库还是数据分析同步数据,没有主键自增 id 都是杀手级的困难.所以在使用 create_time 痛苦了几次之后准备彻底 ...
- python学习笔记(11)--文件与数据格式化
文件的概念: 文件是数据的抽象和集合,是存储在辅助存储器上的数据序列,文件是数据存储的一种形式,文件的展现形态,文本文件和二进制文件. 文本文件输出: f.txt文件保存:“我是中国人” >&g ...
- ansible的playbook简单使用
一.介绍 playbook就是一个用yaml语法把多个模块堆起来的一个文件 核心组件: Hosts:执行的远程主机列表Tasks:任务,由模块定义的操作的列表:Varniables:内置变量或自定义变 ...
- WPF Image控件的绑定
在我们平时的开发中会经常用到Image控件,通过设置Image控件的Source属性,我们可以加载图片,设置Image的source属性时可以使用相对路径也可以使用绝对路径,一般情况下建议使用绝对路径 ...
- servletContext和request对象的生命周期比较
ServletContext: 创建:服务器启动 销毁:服务器关闭 域的作用范围:整个web应用 Request: 创建:访问时创建request 销毁:响应结束request销毁 域的作用范围:一次 ...
- vs code配置
新版的用户设置不是代码, https://blog.csdn.net/zhaojia92/article/details/53862840 https://www.cnblogs.com/why-no ...
- 转载:实现MATLAB2016a和M文件关联
转载自http://blog.csdn.net/qq_22186119 新安装MATLAB2016a之后,发现MATLAB没有和m文件关联 每次打开m文件后都会重新打开一次MATLAB主程序 后来发现 ...
- MobX基础 ----- 类的静态属性和装饰器
当我们使用MobX的时候,首先要声明一个store, 用来保存状态,它的最基本的语法 如下: class Todo { @observable title = ""; @obser ...