【存代码】

#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. vue嵌套路由

    父组件  (注:to="/Flow/moban_a"这里不是文件加路径,是父组件路由+子组件路由) 路由配置

  2. 进程有一个全局变量i,还有有两个线程。i++在两个线程里边分别执行100次,能得到的最大值和最小值分别是多少?

    转自https://blog.csdn.net/biubiu741/article/details/77990592 i++不是原子操作,也就是说,它不是单独一条指令,而是3条指令: 1.从内存中把i ...

  3. 读懂掌握 Python logging 模块源码 (附带一些 example)

    搜了一下自己的 Blog 一直缺乏一篇 Python logging 模块的深度使用的文章.其实这个模块非常常用,也有非常多的滥用.所以看看源码来详细记录一篇属于 logging 模块的文章. 整个 ...

  4. 老男孩python学习自修第十六天【常用模块之sys和os】

    例子: sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys. ...

  5. 取得数据表中前N条记录,某列重复的话只取第一条记录

    项目需要筛选出不重复数据,以前没有做过,第一反应就是利用distinct处理,但是弄了好久也没搞出来,大家有知道的望告知下. 这次筛选没有使用distinct ,是利用group by ,利用id为唯 ...

  6. webpack安裝和卸載

    webpack安裝和卸載 安裝: 先裝好node和npm: 安裝package.json:進入到根目錄,運行npm init 新建全局webpack:cd退到全局目錄,運行npm install -g ...

  7. 八、.net core 通过数据库配置文件连接操作数据库

    一.创建DotNetCore项目 直接创建core项目并不勾选docker支持  二.nuget进行连接MySQL程序集的下载安装 1.MySql.Data.EntityFrameworkCore方式 ...

  8. 三、K8S成功

    kubeadm join 172.17.149.114:6443 --token yjogpa.kk85u2i4n5rt1omq --discovery-token-ca-cert-hash sha2 ...

  9. Nginx TSL/SSL优化握手性能

    L:131

  10. C# 调用短信接口

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...