UVALive 6511 Term Project

Term Project

Time Limit: 3000ms
Memory Limit: 131072KB
This problem will be judged on UVALive. Original ID: 6511
64-bit integer IO format: %lld      Java class name: Main
解题:强连通分量 
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn = 100010;
 4 struct arc{
 5     int to,next;
 6     arc(int x = 0,int y = -1){
 7         to = x;
 8         next = y;
 9     }
10 }e[maxn*10];
11 int head[maxn],dfn[maxn],low[maxn],belong[maxn],cnt[maxn];
12 int tot,clk,scc;
13 bool instack[maxn];
14 stack<int>stk;
15 void init(){
16     for(int i = tot = clk = scc = 0; i < maxn; ++i){
17         head[i] = -1;
18         dfn[i] = 0;
19         cnt[i] = belong[i] = 0;
20         instack[i] = false;
21     }
22     while(!stk.empty()) stk.pop();
23 }
24 void add(int u,int v){
25     e[tot] = arc(v,head[u]);
26     head[u] = tot++;
27 }
28 void tarjan(int u){
29     dfn[u] = low[u] = ++clk;
30     instack[u] = true;
31     stk.push(u);
32     for(int i = head[u]; ~i; i = e[i].next){
33         if(!dfn[e[i].to]){
34             tarjan(e[i].to);
35             low[u] = min(low[u],low[e[i].to]);
36         }else if(instack[e[i].to]) low[u] = min(low[u],dfn[e[i].to]);
37     }
38     if(low[u] == dfn[u]){
39         scc++;
40         int v;
41         do{
42             instack[v = stk.top()] = false;
43             belong[v] = scc;
44             stk.pop();
45             cnt[scc]++;
46         }while(v != u);
47     }
48 }
49 int main(){
50     int kase,n;
51     scanf("%d",&kase);
52     while(kase--){
53         init();
54         scanf("%d",&n);
55         int ret = 0;
56         for(int i = 1,tmp; i <= n; ++i){
57             scanf("%d",&tmp);
58             add(i,tmp);
59             ret += i == tmp;
60         }
61         for(int i = 1; i <= n; ++i)
62             if(!dfn[i]) tarjan(i);
63         for(int i = 1; i <= scc; ++i)
64             if(cnt[i] > 1) ret += cnt[i];
65         printf("%d\n",n - ret);
66     }
67     return 0;
68 }
View Code

 

转载于:https://www.cnblogs.com/crackpotisback/p/4855004.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB混合编程视频教程下载 SIMULINK系统仿真视频

下载链接&#xff1a; http://item.taobao.com/item.htm?id43401674106 精通MATLAB混合编程视频讲解 MATLAB各类函数视频讲解 基于MATLAB的高等数学问题求解 MATLAB函数速查视频讲解 面向对象C视频教程 五朵金花&#xff0c;带你轻松搞定MATLAB 金花详情&#xff1a; 精通MA…

css z-index

为什么80%的码农都做不了架构师&#xff1f;>>> css z-index 最近在发现z-index在position"relative"的元素中会失效 去掉position属性就正常&#xff1a;z-index1 出现在 z-index999之上 记录一下供以后查看 转载于:https://my.oschina.net/livend/blog…

用c++写的一个词典工具

使用的QT图形界面&#xff0c;用libcurl获取的网页&#xff0c;在之中遇见了很多问题&#xff0c;一直想用c类封装一下libcurl,发现c很不到家啊。索性用了友元函数。 先贴上代码吧 main.cpp #include <stdio.h> #include <stdlib.h> #include <unistd.h>#in…

VC++中Format用法

Format是一个很常用&#xff0c;却又似乎很烦的方法&#xff0c;本人试图对这个方法的帮助进行一些翻译&#xff0c;让它有一个完整的概貌&#xff0c;以供大家查询之用&#xff1a;首先看它的声明&#xff1a;function Format(const Format: string; const Args: array of con…

为什么NX10帮助功能无法找到HTML,NX10.0 新功能介绍视频教程专辑

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼NX10.0 新功能介绍视频教程专辑PLM之家NX10.0界面基础新功能--1 NX新界面增强.mp4PLM之家NX10.0界面基础新功能--2 问题管理功能增强.mp4PLM之家NX10.0界面基础新功能--3 资源工具条开发API接口.mp4PLM之家NX10.0界面基础新功能--4…

SVN,桌面右击-settings-Icon Overlays 选择 None

SVN&#xff0c;桌面右击->settings->Icon Overlays 选择 None 转载于:https://www.cnblogs.com/yu520zhong/p/4857324.html

模拟实现strstr

今天我们来模拟实现strstr这个函数&#xff0c;首先我们先来了解一下这个函数&#xff0c;这个函数原型为char *strstr(char *str1,char *str2)&#xff0c;功能是&#xff1a;从字符串str1中查找是否有符串str2&#xff0c;若str2是str1的子串&#xff0c;则先确定str2在str1的…

股票历史数据的获取

从 Yahoo 获取 历史数据 HTML Output: http://finance.yahoo.com/q/hp?s300072.sz&d7&e23&f2010&a5&b11&c2010CSV Output: http://ichart.finance.yahoo.com/table.csv?s300072.sz&d7&e23&f2010&a5&b11&c2010由于历史原因…

html5证书,1+X证书Web前端开发HTML专项练习

1 . HTML5 之前的 HTML 版本是&#xff1f; A.HTML 4.01 B.HTML 4 C.HTML 4.1 D.HTML 4.9 2 . HTML5 的正确 doctype 是&#xff1f; A.B.C.3 . 在 HTML5 中&#xff0c;哪个元素用于组合标题元素&#xff1f;A.B.C.D.4 . HTML5 中不再支持下面哪个元素&#xff1f;A.B.C.D.5 .…

PHP中封装mysql数据库链接(简单版)

为什么80%的码农都做不了架构师&#xff1f;>>> 1&#xff0c;封装mysql数据链接需要哪些属性 主机地址&#xff0c;数据库名&#xff0c;数据库密码&#xff0c;数据库名&#xff0c;字符集 2&#xff0c;利用构造方法在实例化类时&#xff0c;php底层会自动执行的…

c++异常处理机制

c异常处理机制 C异常处理机制是一个用来有效地处理运行错误的非常强大且灵活的工具&#xff0c;它提供了更多的弹性、安全性和稳固性&#xff0c;克服了传统方法所带来的问题. 异常的抛出和处理主要使用了以下三个关键字&#xff1a; try、 throw 、 catch 。 抛出异常即检测…

html标签api,html5新增标签+API介绍

新增标签1、embedembed标签是html5新增的标签&#xff0c;用来嵌入内容&#xff0c;比如插件等&#xff0c;常用于视频文件的播放(为外部应用程序定义容器)。这篇文章介绍了embed的常用属性&#xff0c;基本都是定义播放器的一些设置的&#xff0c;自动播放loop、开始时间start…

UVA10404

1 //题意&#xff1a;S 和 O 二人玩游戏 。N颗石头&#xff0c;M个数&#xff0c;每次拿 M[i]个石头&#xff08;i>0 && i<m) ,谁拿到最后一个谁赢。 2 3 // 定义f[i]为还剩i颗石头时的胜负情况 &#xff0c;若S胜利&#xff0c;则记 1 &#xff0c;4 #include&…

java中定义一个CloneUtil 工具类

其实所有的java对象都可以具备克隆能力&#xff0c;只是因为在基础类Object中被设定成了一个保留方法&#xff08;protected),要想真正拥有克隆的能力&#xff0c; 就需要实现Cloneable接口&#xff0c;重写clone方法。通过克隆方法得到的对象是一个本地的副本。 1、实现Clonea…

C++异常以及错误处理

计算机应用程序中离不开错误处理&#xff0c;尤其是生产型大型软件系统。应用软件系统运行属于循环处理事务&#xff0c;出错后需要保证不能让软件程序直接退出。这就需要使用一定的程序容错处理来应对。一般情况下&#xff0c;大型软件开发中的软件系统容错处理会结合异常处理…

家用台式计算机的额定功率,台式机的功率(台式电脑电源功率多大才合适?)...

台式机的功率(台式电脑电源功率多大才合适&#xff1f;)组装一台电脑&#xff0c;我们需要先挑选好硬件&#xff0c;搭配硬件最关键点就是CPU和主板兼容性&#xff0c;硬件之间的均衡性、电源功率等&#xff0c;均需要考虑周到。那么台式电脑电源功率多大才合适&#xff1f;下面…

关于angularjs input上传图片前获取图片的Size 浅析

首先我们需要一个指令来追踪input的change。ngChage不适用input[file]。 app.directive("fileread", [function () { return { scope: { selectedFile: "", changed: & }, link: function(scope, element, attributes) { element.bind("change&qu…

CountDownLacth详解

一个同步辅助类&#xff0c;在完成一组正在其他线程中执行的操作之前&#xff0c;它允许一个或多个线程一直等待。 用给定的计数 初始化 CounDownLatch。由于调用了countDown() 方法&#xff0c;所以在当前计数到达零之前,await()方法会一直受阻塞。之后&#xff0c;会释放所有…

怎么用计算机画正弦函数图像,几何画板如何绘制正弦函数图象

考虑到三角函数问题描点的实际困难&#xff0c;教材表述时借助正弦线利用几何法利用三角函数线作正弦函数图象&#xff0c;但由此带来的困难是如何实现这种效果。如果能让三角函数线动起来&#xff0c;那将会更加直观易懂。几何画板作为使用专业的几何绘图软件&#xff0c;自带…

C/C++常见指针错误 and 内存访问越界

1) 内存分配未成功&#xff0c;却使用了它。 编程新手常犯这种错误&#xff0c;因为他们没有意识到内存分配会不成功。常用解决办法是&#xff0c;在使用内存之前检查指针是否为NULL。如果指针p是函数的参数&#xff0c;那么在函数的入口处用assert(p!NULL)进行检查。如果是用m…