【存代码】

#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的炮的更多相关文章

  1. 【贪心】小Y的炮[cannon]题解

    模拟赛的题目,做的时候由于第二题表打太久了,只剩下40分钟,想都没想就写了一个爆搜20分... 这道题单调性很关键,下面会解释 P.S.解释在代码里 #include<cstdio> #i ...

  2. 小Y的难题

    Font Size:Aa Aa Aa Description 近期小Y迷上了数学,总是在思考各种数学问题.有一天,他不小心把墨水洒在草稿纸上.他如今能看到的是"2?3?1?4"(? ...

  3. D - 小Y上学记——要迟到了!

    D - 小Y上学记——要迟到了! Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

  4. C - 小Y上学记——认识新同学

    C - 小Y上学记——认识新同学 Time Limit: 4000/2000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

  5. B - 小Y上学记——小Y的玩偶

    B - 小Y上学记——小Y的玩偶 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

  6. A - 小Y上学记——修学分

    A - 小Y上学记——修学分 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) S ...

  7. 【luogu P4007 清华集训2017】小Y和恐怖奴隶主

    题目背景 “A fight? Count me in!” 要打架了,算我一个. “Everyone, get in here!” 所有人,都过来! 题目描述 小 Y 是一个喜欢玩游戏的 OIer.一天 ...

  8. 【luoguP4006 清华集训2017】小Y和二叉树

    题目描述 小 Y 是一个心灵手巧的 OIer,她有许多二叉树模型. 小 Y 的二叉树模型中,每个结点都具有一个编号,小 Y 把她最喜欢的一个二叉树模型挂在了墙上,树根在最上面,左右子树分别在树根的左下 ...

  9. 【luogu P4005 清华集训2017】小Y和地铁

    题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...

随机推荐

  1. 剑指offer(4)

    题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2 ...

  2. $.ajax的async设置true和false的区别一点笔记

    async的默认值是true 当async为true时,为异步请求 如果一个$.ajax的函数在另一个函数中调用,不一定会等该函数调用完再加载完函数 导致产生空值的问题 而在JS函数中调用$.ajax ...

  3. Delphi 在dbgrideh中表格输入数据时有效性的检查(转)

    在数据库系统设计中经常要用到在表格中进行数据录入,如何判断在数据导入时的数据有效性呢?下面介绍几种常用的方法与大家交流. 方法一:Dbgrid是与Table,在Table的Column的OnSetTe ...

  4. 一、Composer

    一.Composer -依赖管理工具 Composer 会帮你安装这些依赖的库文件

  5. linode上切换Linux到FreeBSD

    PS:不是真正的无缝切换,数据需要自己备份.还原. Linode官方给出了一篇文章:https://www.linode.com/docs/tools-reference/custom-kernels ...

  6. pixel和nexus设备安卓9.0/8.1/7.1.x/6.x WiFi和信号图标出现叉x号或者感叹号的消除办 法

    在安卓9.0/8.1/8.0/7.1.2里如何消除x号(在老一点点版本是感叹号)呢? 1.首先开启usb调试,然后用数据线连接电脑和手机. 2.然后解决好您的adb驱动问题,具体教程见:http:// ...

  7. MySQL启动错误---发生系统错误/系统找不到指定的文件。

    今天启动mysql时,突然报错发生系统错误,系统找不到指定的文件.当时有点懵,安装mysql 之后,一直就没有修改过,怎么会报错呢?上网搜索了一下,重新安装一下mysql服务就可以了,现在也不知道什么 ...

  8. YUV格式与RGB格式

    YUV420介绍: YUV420格式是指,每个像素都保留一个Y(亮度)分量,而在水平方向上,不是每行都取U和V分量,而是一行只取U分量,则其接着一行就只取V分量,以此重复(即4:2:0, 4:0:2, ...

  9. linux拷贝多个目录下的文件到同一个目录

    拷贝a目录下的a.txt和b目录下的b.txt到c目录 cp -a \ /root/a/a.txt \ /root/b/b.txt \ /root/c/

  10. Photoshop独立安装包下载页面

    下载页面地址:https://helpx.adobe.com/cn/creative-cloud/kb/creative-cloud-apps-download.html