啥也别说了
看C++和算法,眼泪哗哗的。。。
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔分类
algorithm(14)
(rss)
pku/acm(59)
(rss)
数字图像(1)
(rss)
随笔档案
2010年5月 (1)
2010年3月 (5)
2009年3月 (1)
2008年12月 (1)
2008年11月 (66)
搜索
最新评论
1. re: ACM 2325 Persistent Number 大数相除
大数相除部分,貌似100/20的结果是错的。
--Raise
2. re: 字典树原理(转)
一看就是c++外行写的代码,
--ddd
3. re: ACM 1664 放苹果
赞。。新手 看了豁然开朗。.。谢谢了
--mokuku
4. re: 字典树原理(转)
代码风格不是很好
--ygqwna
5. re: 字典树原理(转)[未登录]
只有new,没有delete,必然内存泄露
--123
阅读排行榜
1. 字典树原理(转)(7977)
2. STL 堆排序使用和体会(转)(2072)
3. ACM 2325 Persistent Number 大数相除(1758)
4. 二叉树实例(1725)
5. 大概了解cin,cin.getline,cin.clear,cin.ignore,cin.get()的用法(1612)
评论排行榜
1. 字典树原理(转)(7)
2. ACM 1730 Perfect Pth Powers(3)
3. ACM 1929 Calories from Fat(2)
4. ACM 2316 SPIN(2)
5. ACM 2325 Persistent Number 大数相除(2)
Powered by:
博客园
模板提供:
沪江博客
C++博客
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
PKU 1308 Is It A Tree?
判断是否为一棵树?
菜鸟思路。。。
1: 0 0 空树是一棵树
2: 1 1 0 0 不是树 不能自己指向自己
3: 1 2 1 2 0 0 不是树....自己开始一直在这么WA 好郁闷 重复都不行呀~~5555
4: 1 2 2 3 4 5 不是树 森林不算是树(主要是注意自己)
5: 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 1 注意 一个节点在指向自己的父亲或祖先 都是错误的 即 9-->1 错
6: 1 2 2 1 0 0 也是错误的
#include
<
iostream
>
#include
<
vector
>
#include
<
string
>
using
namespace
std;
int
main()
{
vector
<
bool
>
result;
while
(
1
)
{
int
a[
100
][
2
];
//
记录输入数据
bool
tree;
int
i
=
0
;cin
>>
a[i][
0
]
>>
a[i][
1
];
if
(a[i][
0
]
==-
1
&&
a[i][
1
]
==-
1
)
{
break
;
}
while
(
1
)
{
tree
=
true
;
if
(a[i][
0
]
==
0
&&
a[i][
1
]
==
0
)
{
break
;
}
i
++
;
cin
>>
a[i][
0
]
>>
a[i][
1
];
}
char
root[
100
];
//
记录是否为根,1是,0不是
memset(root,
1
,
100
);
for
(
int
k
=
0
;k
<
i;k
++
)
{
if
(a[k][
0
]
==
a[k][
1
])
{
tree
=
false
;
}
if
(tree
==
true
)
{
for
(
int
j
=
0
;j
<
i;j
++
)
{
if
(k
!=
j)
{
if
(a[k][
1
]
==
a[j][
1
])
//
不同节点指向相同节点,非树
{
tree
=
false
;
break
;
}
if
(a[k][
0
]
==
a[j][
1
])
//
有节点指向,非根
{
root[k]
=
0
;
}
}
}
}
else
break
;
}
int
num
=
0
;
if
(i
!=
0
&&
tree
==
true
)
{
for
(
int
j
=
0
;j
<
i;j
++
)
//
判断根的数量
{
if
(root[j]
!=
0
)
{
for
(
int
k
=
j
+
1
;k
<
i;k
++
)
{
if
(root[k]
!=
0
&&
a[j][
0
]
==
a[k][
0
])
//
排除相同根情况
{
root[k]
=
0
;
}
}
num
++
;
}
}
if
(num
==
0
||
num
>
1
)
{
tree
=
false
;
}
}
result.push_back(tree);
}
for
(size_t k
=
0
;k
<
result.size();k
++
)
{
if
(result[k]
==
true
)
{
cout
<<
"
Case
"
<<
k
+
1
<<
"
is a tree.
"
<<
endl;
}
else
{
cout
<<
"
Case
"
<<
k
+
1
<<
"
is not a tree.
"
<<
endl;
}
}
}
发表于 2008-11-10 18:05
hunter
阅读(430)
评论(0)
编辑
收藏
引用
所属分类:
pku/acm
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
ACM 2402 Palindrome Numers
ACM 2325 Persistent Number 大数相除
ACM 2316 SPIN
ACM 2299 Ultra QuickSort 合并排序的应用
ACM 2291 Rotten Ropes
ACM 2275 Flipping Pancake reverse()函数的应用
ACM 2273 An Excel-lent Problem
ACM 2183 Bovine Math Geniuses
ACM 2141 Message Decowding
ACM 2140 Herd Sums
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理