【luogu P2341 [HAOI2006]受欢迎的牛】 题解
2024-09-07 19:03:38
题解报告:https://www.luogu.org/problemnew/show/P2341
我们把图中的强连通分量缩点,然后只有出度为0的牛是受欢迎的,这样如果出度为0的牛只有一个,说明受所有牛欢迎。否则出度为0只是受一些牛欢迎。
#include <stack>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 100000 + 10;
struct edge{
int next, to, from, len;
}e[maxn<<2];
int head[maxn], cnt;
int n, m, color[maxn], tong[maxn], du[maxn], num, tim, ans, tmp;
int dfn[maxn], low[maxn];
bool vis[maxn];
stack<int> s;
void add(int u, int v)
{
e[++cnt].from = u;
e[cnt].to = v;
e[cnt].next = head[u];
head[u] = cnt;
}
void tarjan(int x)
{
dfn[x] = low[x] = ++tim;
s.push(x); vis[x] = 1;
for(int i = head[x]; i != -1; i = e[i].next)
{
int v = e[i].to;
if(!dfn[v])
{
tarjan(v);
low[x] = min(low[x], low[v]);
}
else if(vis[v])
{
low[x] = min(low[x], low[v]);
}
}
if(dfn[x] == low[x])
{
color[x] = ++num;
vis[x] = 0;
while(s.top() != x)
{
color[s.top()] = num;
vis[s.top()] = 0;
s.pop();
}
s.pop();
}
}
int main()
{
memset(head, -1, sizeof(head));
scanf("%d%d",&n,&m);
for(int i = 1; i <= m; i++)
{
int u, v;
scanf("%d%d",&u,&v);
add(u,v);
}
for(int i = 1; i <= n; i++)
if(!dfn[i]) tarjan(i);
for(int i = 1; i <= n; i++)
{
for(int j = head[i]; j != -1; j = e[j].next)
{
int v = e[j].to;
if(color[v] != color[i])
{
du[color[i]]++;
}
}
tong[color[i]]++;
}
for(int i = 1; i <= num; i++)
{
if(du[i] == 0)
{
tmp++;
ans = tong[i];
}
}
if(tmp == 0)
{
printf("0");
return 0;
}
if(tmp == 1)
{
printf("%d",ans);
return 0;
}
if(tmp > 1)
{
printf("0");
return 0;
}
}
最新文章
- 装X代码
- 通杀所有系统的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻击
- Unity3D连接sqlite数据库操作C#版
- Atitit 桌面软件跨平台gui解决方案 javafx webview
- CSS总结 最后的选择符和字体、元素常见样式
- MXS 编辑器外观
- JS之tagNaem和nodeName
- Mes首检确认统计的存储过程
- RMAN数据库恢复之恢复表空间和数据文件
- Git学习01 --git add, git commit , git log ,git status, git reset --hard, head
- FOJ 1591 —— Coral的烦恼
- PDO进行sql报表编制结果集介绍及操作(两)
- [ERROR] Terminal initialization failed; falling back to unsupported java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
- 海量并发的无锁编程 (lock free programming)
- MySQL 数据库 Query 的优化
- Python-类的封装
- 安装openssl
- luogu P4314 CPU监控
- nginx给server增加日志配置
- win server 2003 x64 IIS配置
热门文章
- adb调试安卓
- 关于Json字符串";反序列化Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path...";
- JS代码格式化排版工具,web文本编辑器
- 九度oj题目1165:字符串匹配
- Understanding Java 8 Streams API---reference
- js中的break,continue,return
- Problem E: 积木积水 ——————【模拟】
- spring mvc 外键允许Null
- 引用SQLHelper类configurationmanager 不存在
- 封装http请求键值对的js函数