| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这代码错哪儿了大家来看看:#include <iostream>
#include <vector>
#include <cstdio>
#include <string>
using namespace std;
#define MAXN 5005
bool in[MAXN];
vector<int> mp[MAXN];
int opt[MAXN];
int tt[MAXN];
int n,m;
int go(int sta)
{
if(!in[sta]) { opt[sta]=1; return 1;}
if(opt[sta]!=-1) return opt[sta];
register int i;
int tmpsum=0;
int len=mp[sta].size();
for(i=0;i<len;i++)
{
tmpsum+=go(mp[sta][i]);
}
opt[sta]=tmpsum;
return tmpsum;
}
int main()
{
register int i;
int x,y;
memset(opt,-1,sizeof(opt));
scanf("%d%d",&n,&m);//n nodes ,m edges
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
mp[y].push_back(x);
in[y]=true;
}
int sum=0;
go(n);
int max=0;
for(i=0;i<mp[n].size();i++)
{
if(max<opt[mp[n][i]]) max=opt[mp[n][i]];
}
int cnt=0;
for(i=0;i<mp[n].size();i++)
{
if(max==opt[mp[n][i]])
cnt++;
}
if(cnt>1) max=0;
printf("%d\n",max);
return 0;
}
/*
5 4
1 3 2 3 3 5 4 5 =2
4 5
1 2 2 3 2 3 3 4 3 4 =0
5 4
1 2 2 5 3 4 4 5 =0
3 3
1 2 2 3 2 3 =0
6 5
1 3 2 3 3 4 4 6 5 6 =2
3 2
1 3 2 3 =0
5 6
1 3 2 3 2 4 4 5 3 5 3 5 =0
2 1
1 2 =1
5 5
1 3 3 5 2 3 2 4 4 5 =2
4 4
1 2 2 3 2 3 3 4 =2
这些数据测地都对呀
*/
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator