为什么总是TLE啊,一直找不到原因
代码献上,求大佬指教
#include<bits/stdc++.h>
using namespace std;
bool maps[10010][10010];
int n,times[10010],stacks[10010],top,maxn,cnt;
int du(int num)
{
int count_=0;
for(int i=1;i<=n;i++) if(maps[num][i])count_++;
return count_;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
int a,b;
cin>>a>>times[i];
while(cin>>b)
{
if(!b) break;
maps[a][b]=1;
}
}
for(int i=1;i<=n;i++) if(!du(i)) cnt=times[i],stacks[++top]=i;
while(top>0)
{
int num=stacks[top--];
for(int i=1;i<=n;i++)
{
maps[i][num]=0;
if(!du(i))
{
stacks[++top]=i;
maxn=max(maxn,times[i]);
cnt+=maxn;
}
}
}
cout<<cnt;
}