c++&oi
usaco4.3.3
图论的题目,主要考察的是联通性的问题。
由于数据非常弱小,枚举+遍历验证即可。
时间O(nm)
代码
/*
USER:zyn19961
TASK:race3
LANG:C++
*/
#include
<
cstdio
>
#include
<
cstring
>
const
int
maxm
=
105
;
int
next[maxm];
int
head[maxm];
int
to[maxm];
bool
arrived[maxm];
bool
count[maxm];
int
begin,end;
int
n
=
0
,m
=
0
;
int
ans1[maxm];
int
ans2[maxm];
void
dfs(
int
i);
int
main(){
freopen(
"
race3.in
"
,
"
r
"
,stdin);
freopen(
"
race3.out
"
,
"
w
"
,stdout);
memset(ans1,
0
,
sizeof
(ans1));
memset(ans2,
0
,
sizeof
(ans2));
memset(head,
0
,
sizeof
(head));
memset(next,
0
,
sizeof
(next));
memset(to,
0
,
sizeof
(to));
int
t;
while
(
1
){
while
(
1
){
scanf(
"
%d
"
,
&
t);
if
(t
==-
2
||
t
==-
1
)
break
;
m
++
;
next[m]
=
head[n];
head[n]
=
m;
to[m]
=
t;
}
if
(t
==-
1
)
break
;
n
++
;
}
n
--
;
for
(
int
i
=
1
;i
<=
n
-
1
;i
++
){
memset(arrived,
false
,
sizeof
(arrived));
memset(count,
false
,
sizeof
(count));
arrived[i]
=
true
;
dfs(
0
);
if
(
!
arrived[n]){
ans1[
0
]
++
;
ans1[ans1[
0
]]
=
i;
for
(
int
j
=
0
;j
<=
n;j
++
)
if
(arrived[j])
count[j]
=
true
;
count[i]
=
false
;
memset(arrived,
false
,
sizeof
(arrived));
dfs(i);
bool
flag
=
true
;
for
(
int
j
=
0
;j
<=
n;j
++
)
if
(arrived[j]
&&
count[j])
flag
=
false
;
if
(flag){
ans2[
0
]
++
;
ans2[ans2[
0
]]
=
i;
}
}
}
printf(
"
%d
"
,ans1[
0
]);
for
(
int
i
=
1
;i
<=
ans1[
0
];i
++
)
printf(
"
%d
"
,ans1[i]);
printf(
"
\n
"
);
printf(
"
%d
"
,ans2[
0
]);
for
(
int
i
=
1
;i
<=
ans2[
0
];i
++
)
printf(
"
%d
"
,ans2[i]);
printf(
"
\n
"
);
fclose(stdin);
fclose(stdout);
return
0
;
}
void
dfs(
int
i){
arrived[i]
=
true
;
for
(
int
p
=
head[i];p;p
=
next[p])
if
(
!
arrived[to[p]])
dfs(to[p]);
}
posted on 2011-12-22 19:03
zyn.cpp
阅读(86)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
<
2011年11月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
导航
C++博客
首页
新随笔
联系
聚合
管理
统计
随笔 - 57
文章 - 13
评论 - 11
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
(57)
2012年6月 (2)
2012年5月 (4)
2012年4月 (18)
2012年3月 (7)
2012年2月 (14)
2012年1月 (3)
2011年12月 (8)
2011年11月 (1)
文章档案
(13)
2012年2月 (1)
2011年12月 (7)
2011年11月 (1)
2011年9月 (3)
2011年8月 (1)
搜索
最新评论
1. re: 培训作业-第三周(STL&USACO+4)
评论内容较长,点击标题查看
--佛教网
2. re: 培训作业-第三周(STL&USACO+4)
评论内容较长,点击标题查看
--happem
3. re: NOIP2011解题报告
sum[i]表示前i个点的单位数?这。。,sum[i]表示i点前下车的乘客数吧?
--锐
4. re: NOIP2011解题报告
顶一下。。
--锐
5. re: 培训作业-第三周(STL&USACO+4)
@zyn.cpp
用vector暴力平衡树啊。。。
--姚京韬
阅读排行榜
1. NOIP2011普及组的第三题:瑞士轮(2632)
2. NOI LINUX 安装记(1975)
3. 随便说说状态压缩(1532)
4. 迎接初中同学——整理OI知识点(building)(805)
5. POJ 1733 (553)
评论排行榜
1. 培训作业-第三周(STL&USACO+4)(5)
2. NOIP2011普及组的第三题:瑞士轮(2)
3. POJ 1733 (1)
4. 给count-base sort正身(0)
5. 奇怪的乘法运算(cm)(0)
Powered by:
C++博客
Copyright © zyn.cpp