ACM新手题老是WA,求解救
http://acm.bnu.edu.cn/contest/problem_show.php?pid=10809
聚餐
Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 65536 KB
Submit: 149 Accepted: 58
[Prev][Next]
Description
Lolilu大牛又要请客了~~
有些同学呢,是果断要去的,而有些同学呢,只有确定心中的大牛会参加,他才会参加。
Lolilu决定请大家去吃金钱豹,因此希望你告诉他一共会有多少人参加,他才知道带多少钱比较合适。假设金钱豹人均消费200元。
Input
第一行一个整数N(N<=100),表示一共多少个同学。
接下来N行依次描述了这N个同学,每行一个整数C表示该同学心中的大牛的编号。如果C为-1表示该同学果断要去。
Output
一个整数T,表示Lolilu大牛要出多少钱。
Sample Input
5
-1
1
2
5
4
Sample Output
800
Hint
首先1号果断去,因此2号也去,所以3号去。4,5互相仰慕,因为都不能明确知道对方会不会去,所以都不去。最终3个人去,加上Lolilu大牛自己一共4人,所以总共花费800。
- C/C++ code
# include<stdio.h># include<string.h>int main(void){ int a[101],b[101],i,j,n,num; while(scanf("%d",&n)!=EOF) { num = 1; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(i=1;i<=n;i++) { scanf("%d",&a[i]); if(a[i] == -1) { b[i] = 1; num++; } } for(i=1;i<=n;i++) { if(a[i] == -1) continue; if(b[a[i]]) { b[i] = 1; num++; } } printf("%d\n",200*num); } return 0;}[解决办法]
for(i=1;i<=n;i++)
{
if(a[i] == -1) continue;
if(b[a[i]])
{
b[i] = 1;
num++;
}
}