小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.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...
随机推荐
- JS中的<a>标签
<a>标签可定义锚.一个锚有两种用法: 通过使用 href 属性,创建一个到另外一个文档的链接 通过使用 name 或 id 属性,创建一个文档内部的书签 如果是在 HTML 5 中,它定 ...
- C# Note23: 如何自定义类型使用foreach循环
前言 在foreach语句代码中,我们经常是对List,Collection,Dictionary等类型的数据进行操作,不过C#允许用户自定义自己的类型来使用foreach语句.那么自定义类型能够使用 ...
- C# Note21: 扩展方法(Extension Method)及其应用
前言 今天在开会时提到的一个概念,入职3个多月多注重在项目中使用C#的编程知识,一直没有很认真地过一遍C#的全部语法,当我们新人被问及是否了解Extension Method时,一时之间竟不能很通俗准 ...
- centos7优化启动项,关闭一些不必要开启的服务
CentOS7已不再使用chkconfig 管理启动项 使用 systemctl list-unit-files 可以查看启动项 systemctl list-unit-files | grep en ...
- How to enable AHCI on Windows7
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci
- [AHOI2008]紧急集合 / 聚会
题目描述 欢乐岛上有个非常好玩的游戏,叫做“紧急集合”.在岛上分散有N个等待点,有N-1条道路连接着它们,每一条道路都连接某两个等待点,且通过这些道路可以走遍所有的等待点,通过道路从一个点到另一个点要 ...
- ConnectionAbortedError: [WinError 10053] 您的主机中的软件中止了一个已建立的连接
socket服务端在接收socket客户端时抛出异常 ConnectionAbortedError: [WinError 10053] 您的主机中的软件中止了一个已建立的连接. socket服务端代码 ...
- MySQL 练习题 附答案,未完
综合练习题 表结构 整合一下方便查看 teacher student course scors 练习题 1.自行创建测试数据 create table student( sid int prima ...
- 对比cp和scp命令 将数据从一台linux服务器复制到另一台linux服务器
cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录.它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下.cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文 ...
- nagios 配置 check_traffic 流量监控模块(被监控端)
安装软件包yum -y install net-snmp*chkconfig nrpe onchkconfig snmpd on 使用SCP命令拷贝 check_traffic.sh 到 / usr/ ...