| ||||||||||
| 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 | |||||||||
1470老是超时,那位高手能帮小弟看看不,谢谢了#include <iostream>
#include <map>
#include <vector>
using namespace std;
int *a,*b; int vnum;
struct Edge{
int x,y;
};
vector<Edge>pvect;
map<int,int>imap;
map<int,int>::iterator iter;
void solve()
{
int i,j,x,y;
b=new int[vnum+2];
for(i=0;i<vnum+1;i++) b[i]=0;
for(i=0;i<pvect.size();i++){
x=pvect[i].x;
y=pvect[i].y;
b[x]=true;
while(a[x]){
b[a[x]]=true;
x=a[x];
}
while(true){
if(b[y]){
iter=imap.find(y);
if(iter!=imap.end()) iter->second++;
else imap[y]=1;
break;
}
else y=a[y];
}
for(j=0;j<vnum+1;j++) b[j]=0;
}
delete []b;
}
int main()
{
int i,j,v,u,m;
char c;
Edge pnode;
while(scanf("%d",&vnum)){
a=new int[vnum+2];
for(i=0;i<vnum+1;i++) a[i]=0;
for(i=0;i<vnum;i++){
scanf("%d",&v);
while(scanf("%c",&c)&&c!='(');
scanf("%d",&m);
while(scanf("%c",&c)&&c!=')');
for(j=0;j<m;j++){
scanf("%d",&u);
a[u]=v;
}
}
scanf("%d",&m);
while(m--){
while(scanf("%c",&c)&&c!='(');
scanf("%d%d",&u,&v);
pnode.x=u;pnode.y=v;
pvect.push_back(pnode);
while(scanf("%c",&c)&&c!=')');
}
solve();
for(iter=imap.begin();iter!=imap.end();iter++)
printf("%d:%d\n",iter->first,iter->second);
delete []a;
imap.clear();
pvect.clear();
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator