VIJOS p1023 Victoria的舞会3 终于AC了!!!

stata 代码实现熵值法计算 含常见问题解答 2.标准化①正向指标②负向指标。 阅读详情

图论一直以来都很弱,又不懂什么最小点基(实现方法)……AC的时候……真爽啊。。。。。

Victoria的舞会3 Victoria的舞会 系列  
   
   
 
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
-------------------------
Accepted 有效得分:100 有效耗时:0ms

hoho~

先把题贴一下:

描述 Description  
    Victoria是一位颇有成就的艺术家,他因油画作品《我爱北京天安门》闻名于世界。现在,他为了报答帮助他的同行们,准备开一个舞会。
  Victoria准备邀请n个已经确定的人,可是问题来了:
  这n个人每一个人都有一个小花名册,名册里面写着他能够通知到的人的名字。比如说在A的人名单里写了B,那么表示A能够通知到B;但是B的名单里不见的有A,也就是说B不见得通知到A。
  Victoria觉得需要确定自己需要通知多少个人m,能够实际将所有人n都通知到。并求出一种方案以确定m的最小值是多少。
  注意:自己的名单里面不会有自己的名字。Victoria可以自身通知到所有n个人。
   
   
 输入格式 Input Format 
  第一行一个数n。接下来n行,每i+1行表示编号为i的人的小花名册名单,名单以0结束。1<=n<=200。
   
   
 输出格式 Output Format 
  一个数,m。
   
   
 样例输入 Sample Input  
 

18
0
11 0
0
0
0
16 0
14 0
0
0
0
2 13 0
0
11 0
7 0
0
6 0
0
0

   
   
 样例输出 Sample Output  
  14
   
   
 时间限制 Time Limitation 
  各个测试点1s

貌似有一个类似模拟的办法,VIJOS上有人说过了。

以下是我苦思冥想出来的成果,没想到一遍就AC了。

1 把原有向图G中强连通分量缩为一点

    1.1 DFS(G),记录节点访问完成的顺序,也可以说是一次拓扑排序。

    1.2 反转图每一条弧得到新图Gt。

    1.3 按照1.1记录的顺序DFS(Gt),得到的森林里每一棵树都是一个强连通分量。(用并查集合并每一个访问到的节点,从而实现“缩”强连通分量)。得到一强连通分量为单位的图Gscc。

2 DFS(Gscc),再一次拓扑排序,记录强连通分量访问完成的顺序。

4 按照2记录的顺序DFS(Gscc),用并查集得到访问产生的森林。

5 统计最后森林中树的个数即可得到答案。

 

程序(K&R风格代码)有120+行的样子。。。

 

 

#include < stdio.h >
#include
< stdbool.h >
void  toposort( void );
void  topovisit( int  i);
void  reverse( void );
void  contract( void );
void  convisit( int  i);
void  contract2( void );
void  convisit2( int  i);
 
int  rank[ 201 ], set [ 201 ];

void  Makeset( int  x)
{
        
set[x]=x;
        rank[x]
=0;
}

int  Find( int  x)
{
        
if(set[x]!=x)
                
set[x]=Find(set[x]);
        
return set[x];
}

void  Link( int  x, int  y)
{
        
if(rank[x]>rank[y])
                
set[y]=x;
        
else{
                
set[x]=y;
                
if(rank[x]==rank[y]) rank[y]++;
        }

}

void  Union( int  x, int  y)
{
        Link(Find(x),Find(y));
}


int  n,topo[ 201 ],p; 
int  nc;
bool  gt[ 201 ][ 201 ],g[ 201 ][ 201 ],vis[ 201 ];
int  main( void )
{
        
int i,j,k;
        
int t,count=0;
        FILE 
*fin=stdin;
        fscanf(fin,
"%d ",&n);
        nc
=n;
        
for(i=0;i<n;i++){
                
while(1){
                        fscanf(fin,
"%d", &t);
                        
if(!t) break;
                        g[i][t
-1]=true;
                }

                Makeset(i);
        }

        toposort();
        reverse();
        contract();
        toposort();
        contract2();
        
for(i=0;i<n;i++) if(set[i]==i) count++;
        printf(
"%d ",count);
        
return 0;
}

void  toposort( void )
{
        
int i;
        memset(vis,
0,sizeof(vis));
        p
=0;
        
for(i=0;i<n;i++) if(!vis[i]) topovisit(i);
}

void  topovisit( int  i)
{
        
int j;
        vis[i]
=true;
        
for(j=0;j<n;j++){
                
if(g[i][j] && Find(i)!=Find(j) && !vis[j]){
                        topovisit(j);
                }

        }

        topo[p
++]=Find(i);
        
}

void  reverse( void )
{
        
int i,j;
        
for(i=0;i<n;i++)
                
for(j=0;j<n;j++)
                        
if(g[i][j]) gt[j][i]=true;
}

void  contract( void )
{
        
int j;
        memset(vis,
0,sizeof(vis));
        
for(j=0;j<n;j++) if (!vis[topo[j]]) convisit(topo[j]);
}

void  convisit( int  i)
{
        
int j;
        vis[i]
=true;
        
for(j=0;j<n;j++){
                
if(gt[i][j] && !vis[j]){
                        Union(i,j);
                        convisit(j);
                }

        }

}

void  contract2( void )
{
        
int j;
        memset(vis,
0,sizeof(vis));
        
for(j=0;j<p;j++) if (!vis[topo[j]]) convisit(topo[j]);
}

void  convisit2( int  i)
{
        
int j;
        vis[i]
=true;
        
for(j=0;j<n;j++){
                
if(g[i][j] && !vis[j]){
                        Union(i,j);
                        convisit(j);
                }

        }

}

Hermes Agent 安装部署完全指南 Hermes Agent安装部署指南提供了两种安装方式:一键脚本安装和手动分步安装。该AI助手支持多平台运行(Linux/macOS/WSL2),核心功能仅需Git作为前置依赖,其他依赖如Python、Node.js等均由安装脚本自动处理。文档详细介绍了系统要求、依赖管理、配置目录结构、环境变量设置以及10个手动安装步骤,并提供了功能模块化选项,用户可根据需求选择安装语音交互、浏览器自动化等扩展功能。安装完成后可通过hermes doctor命令验证环境,并通过交互式向导完成初始化配置。 阅读详情

相关推荐

Codex Skill:AI编程助手的专项能力扩展与实战指南

在AI编程助手领域,Skill(技能)是一种标准化的能力扩展机制,它通过封装特定任务所需的指令、资源和脚本,解决AI模型在专项任务上的能力局限。其核心原理是将专业知识和工作流程模块化,让通用AI助手能够像领域专家一样执行复杂任务。从技术价值看,Skill不仅提升了代码生成的准确性,更重要的是实现了业务流程的自动化集成,如代码规范检查、API文档生成等具体场景。这种机制特别适用于需要结合内部工具链和特定业务逻辑的企业环境,能够显著提升开发效率和质量。通过安装PPT生成、SpringBoot项目创建等专项Ski

weixin_33672109的博客 413

Victoria的舞会2——图的连通性及连通分量

【Vijos1022]】Victoria的舞会2 Description Victoria是一位颇有成就的艺术家,他因油画作品《我爱北京天安门》闻名于世界。现在,他为了报答帮助他的同行们,准备开一个舞会。 Victoria准备邀请n个已经确定的人,可是问题来了: 这n个人每一个人都有一个小花名册,名册里面写着他所愿意交流的人的名字。比如说在A的人名单里写了B,那么表

在思索中前行! 1321

Cursor AI编程工具保姆级安装指南:从下载到中文界面设置(含免费额度说明)

本文提供Cursor AI编程工具的保姆级安装与设置教程。详细指导从官网下载、安装到中文界面切换的每一步,并重点说明其每月500次高级模型调用的免费额度策略。通过个性化设置与核心插件推荐,帮助开发者快速上手,提升AI辅助编程效率。

weixin_29191761的博客 671

Vijos1022. Victoria的舞会2

试题请参见: https://vijos.org/p/1130 题目概述 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理 1. 不作任何处理; 2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3. 加上数后,继续按此规则进行处理,直到不能再立生自然数为止. 输入 一个自然数n.

Infinite Script 2357

告别两个电源模块!用UCD3138+四开关Buck-Boost,一个电路搞定电池充放电(附原理图分析)

本文详细介绍了采用UCD3138数字控制器和四开关Buck-Boost拓扑的双向DC/DC变换器设计,实现单一电路完成电池智能充放电管理。该方案显著降低BOM成本和PCB面积,提升系统效率至96.2%,适用于UPS、通信基站和储能系统,具有高效、紧凑和成本优势。

weixin_30256901的博客 397

概率论基础-严士健 第二版 习题与补充1.6答案

概率论基础-严士健 第二版 习题与补充1.6答案 1.不独立。 设有一均匀正八面体,其第1,2,3,4面染红色,第1,2,3,5面染白色,第1,6,7,8面染黑色,现在以A,B,C分别表示投一次正八面体出现红、白、黑的事件,则 P(A)=P(B)=P(C)=12.P(A) = P(B) = P(C) = \frac{1}{2}.P(A)=P(B)=P(C)=21​. P(ABC)=18=P(A)P...

weixin_42341993的博客 2515

vijos1023 Victoria的舞会3

这道题我用的是floyd预处理,并查集的思想。虽然实现很简单,但是有很多细节问题还是值得认真研究的。 https://www.vijos.org/p/1023 先上一下我之前错的代码: //#include #include #include #include #include #include #include #include #include #include #include #

zhangxian___的博客 434

为什么AI时代的优秀组织,都在学习Meta的Pod结构?看完秒懂

当AI技术重塑产业格局,企业协作正面临前所未有的挑战——层级繁琐、跨部门内耗、迭代滞后,传统组织模式早已难以跟上技术革新的步伐。作为全球AI原生企业的标杆,Meta独创的Pod组织模式,用“小而美”的自治单元打破困局,成为AI时代高效协作的典范。本文将从定义、运作、价值到未来演进,全面拆解Pod模式,为企业组织变革提供可参考的思路与路径。德鲁克曾说:“组织的功能就是让平凡的人做平凡的事。”而Meta Pod打破这一局限,通过去中心化、指标导向、跨界融合,让优秀人才产生“化学反应”。

Kiss_AIHR的博客 1166

求助大神解答

这n个人每一个人都有一个小花名册,名册里面写着他所愿意交流的人的名字。而且如果A名单里面有B,那么B名单里面肯定有A,也就是说两个人如果一方愿意和另一方交流,那么另一方也肯定愿意和这一方交流。Victoria觉得需要在这n个人里面确定m个人,保证这m个人每一个人都能在舞会中找到至少k个人交流,并求出一种方案以确定m的最大值是多少。现在给定一个n个点m条边的无向图,问在小明的评分方法下,分数为多少。一个无向图的分数定义为,各个连通块是树的数量。于是,他发明了自己的对于无向图的评分方法。

LIYUNINGMENG的博客 274

安装anaconda3时出现错误:Failed to link extracted packages to D:\anaconda!...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1479

华为OD机试真题 新系统 2026-04-22 C++ 实现【小学生班长选举增强版】

9 月份开学第一天,小学某班级进行班长选举活动,班级共有 N 个学生,每个学生最多可投 3 票(对同一个人只能投一票),也可以弃权不投票,大家投票时写上对应学生的名字。 假设学生不存在重名。考虑到部分少数民族名字带分隔,且整体较长,同学在投票时为了方便,允许同学写全称,也可以只写其中的部分连续段。 例如班级里只有 2 个少数民族名称带点的同学:

MISAYAONE的博客 167

victoria的舞会1 java_Victoria的舞会1

描述:Victoria是一位颇有成就的艺术家,他因油画作品《我爱北京天安门》闻名于世界。现在,他为了报答帮助他的同行们,准备开一个舞会。Victoria准备邀请n个已经确定的人,可是问题来了:这n个人每一个人都有一个小花名册,名册里面写着他所愿意交流的人的名字。比如说在A的人名单里写了B,那么表示A愿意与B交流;而且如果A名单里面有B,那么B名单里面肯定有A,也就是说两个人如果一方愿意和另一方交流...

weixin_28872105的博客 182

【PINN物理信息网络】基于PINN物理信息网络结合Wave 2D有限差分方法(python)

【PINN物理信息网络】基于PINN物理信息网络结合Wave 2D有限差分方法(python)

k8291121的博客 1818

|Vijos|图论强连通分量|P1023 Victoria的舞会3

https://vijos.org/p/1023 此题虽然可以并查集AC,但是实际上并查集是错误的 这道题只能用tarjan算法求强连通分量,因为这个是一个有向图,而并查集只能求无向图的强连通分量 #include #include #include #include #include #include #define ms(i,j) memset(i, j, sizeof(i)); usi

博客停更,请到"再见,优快云"文章中找新博客地址 593

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[vijos P1023] Victoria的舞会3

这…本来想学习一下Tarjan算法的,没想到码都码好了发现这题不是求强连通分量而是简单的连通分量…图论基础都还给老师了啊啊啊!最后深搜通通解决! v标记是否被访问过,scc标记每个的祖先(本来想写Tarjan的才弄出这么奇葩个数组名字),w用于最后的统计。 program vijos_p1023; var map:array[0..210,0..210] of longint; ...

weixin_34044273的博客 146

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【基础练习】【强连通tarjan】vijos1021-1023 Victoria的舞会系列题解

题目连接:https://vijos.org/p/Victoria%E7%9A%84%E8%88%9E%E4%BC%9A 这是一个图论的系列题目,题目比较简单,主要在于数据实在是弱···两百个点暴搜都能过啊··· vijos用户体验还是不错的 除了管理不太严格导致题解混乱 虽然二老板在但也长期无人打理  如果照管好 这一定会是一个相当出色的OJ 1021 舞会1 这道题目其实就是简

西家家 1089

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

vijos--P1021Victoria的舞会1贪心

题目: 描述 Victoria是一位颇有成就的艺术家,他因油画作品《我爱北京天安门》闻名于世界。现在,他为了报答帮助他的同行们,准备开一个舞会。 Victoria准备邀请n个已经确定的人,可是问题来了: 这n个人每一个人都有一个小花名册,名册里面写着他所愿意交流的人的名字。比如说在A的人名单里写了B,那么表示A愿意与B交流;而且如果A名单里面有B,那么B名单里面肯定有A,也就是说两个人如果一方...

weixin_44606952的博客 355

颇有成绩的一天(第十二天)

       今天可好,今天早上五点多起来,不过昨天晚上睡的很晚,早上起来就决定投简历,想了很久了,因为现在找工作的人太多了,我知道任何一个人事部经理的邮箱每天都会很着无数的邮件,所有要想在前面让各个经理看见自己的邮件就必须在他的邮箱前面,所以选择今天早上在经理上班之前发到他手上。这也是一个细节,刚刚看了《细节决定成败》就得以运用啊。随便也将自己的题目改为“有项目经验的应届生”这样希望能更加吸引眼

flyerhua的专栏 537

我的作品截图

作品一:3D射击游戏1.工程框架2.主菜单界面3.选择关卡界面4.游戏场景5.接任务场景6.进行任务场景7.完成任务场景作品二:2D推箱子1.工程框架2.游戏进行3.地图编辑器

panmmjun的专栏 373

【图论】【Floyed】舞会邀请(CODE[VS] 2604)

舞会邀请 CODE[VS] 2604 题目大意:Smart要叫一些人开Party,每个人可以通知一部分人,Smart去通知一些人,再让这些人去通知其他人,问Smart最少通知几个人,可以使全部人都被通知到

ssllyf的博客 400

百度地图学习总结(2)—Hello-BaiduMap

接上一篇: http://blog.youkuaiyun.com/user11223344abc/article/details/781543571.集成前想想申请了半天,感觉累累哒,迫不及待的就想看见点什么,于是开始集成,集成就涉及到一个问题,百度地图sdk都是分模块的,那么我思考我的大体目标是: 基础地图:基本展示,隐藏地图右下角加减号,将距离比例尺调小… 全量定位:包含基础,离线,室内… 云检索:poi

点滴积累 744

我的作品

1.ESFramework通信框架 ESFramework 是一套性能卓越、稳定可靠、强大易用的跨平台通信框架,支持应用服务器集群。其内置了消息的收发与自定义处理(支持同步/异步模型)、消息广播、P2P通道、文件传送(支持断点续传)、心跳检测、断线重连、登录验证、在线用户管理、好友与群组管理、性能诊断等功能。基于ESFramework,您可以方便快捷地开发出各种优秀的网络通信应用。此外,我们在长...

weixin_33670786的博客 155

【vijos】P1022 Victoria的舞会2

题解 #include #include using namespace std; int father[300]; int a[300]; void init(int n) { for(int i=1;i<=n;i++) father[i]=i; } int find(int x) { if(x!=father[x]) father[x]=find(father[x]); re

zhuml123的专栏 576
上一篇: C语言:用负数作数组下标?YES!
下一篇: USACO Prime Cryptarithm Accepted
DaNmarner
博客等级 码龄21年 27粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值