2026/4/8 0:35:57
网站建设
项目流程
网站变更备案,如何建设文化企业网站,深圳市住房和建设局官网登录,南京专业网站营销P2863 [USACO06JAN] The Cow Prom S
题目描述
有一个 nnn 个点#xff0c;mmm 条边的有向图#xff0c;请求出这个图点数大于 111 的强连通分量个数。
输入格式
第一行为两个整数 nnn 和 mmm。
第二行至 m1m1m1 行#xff0c;每一行有两个整数 aaa 和 bbb#xff0c;表示有…P2863 [USACO06JAN] The Cow Prom S题目描述有一个nnn个点mmm条边的有向图请求出这个图点数大于111的强连通分量个数。输入格式第一行为两个整数nnn和mmm。第二行至m1m1m1行每一行有两个整数aaa和bbb表示有一条从aaa到bbb的有向边。输出格式仅一行表示点数大于111的强连通分量个数。输入输出样例 #1输入 #15 4 2 4 3 5 1 2 4 1输出 #11说明/提示数据规模与约定对于全部的测试点保证2≤n≤1042\le n \le 10^42≤n≤1042≤m≤5×1042\le m\le 5\times 10^42≤m≤5×1041≤a,b≤n1 \leq a, b \leq n1≤a,b≤n。C实现#includebits/stdc.h#definemaxn10001usingnamespacestd;vectorintG[maxn];stackints;intn,m;intdfn[maxn],used[maxn],vis[maxn],low[maxn],color[maxn],num[maxn],colornum0,cnt0,ans0;voidpaint(intx){s.pop();color[x]colornum;num[colornum];vis[x]false;}voidtarjan(intx){dfn[x]low[x]cnt;s.push(x);vis[x]used[x]true;for(inti0;iG[x].size();i){intqG[x][i];if(!dfn[q]){tarjan(q);low[x]min(low[x],low[q]);}elseif(vis[q])low[x]min(low[x],dfn[q]);}if(low[x]dfn[x]){colornum;while(s.top()!x){intts.top();paint(t);}paint(x);}}intmain(){cinnm;for(inti1;im;i){intu,v;cinuv;G[u].push_back(v);}for(inti1;in;i){if(!used[i])tarjan(i);}for(inti1;icolornum;i){if(num[i]1)ans;}coutans;return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容