#include<iostream>
#include<vector>
#include<utility>
#include<queue>
#include<cstring>
using namespace std;
#define int long long
vector<int> vec[5007];
bool visited[5007];
int cnt,cost;
int n;
void bfs(int x){
queue<pair<int,int>> q;
q.push({x,1});
visited[x]=true;
while(!q.empty()){
pair<int,int> p=q.front();
q.pop();
++cnt;
cost+=p.second;
for(auto i:vec[p.first]){
if(visited[i]) continue;
visited[i]=1;
q.push({i,p.second+1});
}
}
}
signed main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
cin >> n;
for(int i=1;i<=n;++i){
int tmp; cin >> tmp;
while(tmp--){
int tmp2; cin >> tmp2;
vec[tmp2].push_back(i);
}
}
int ans=1e18;
for(int i=1;i<=n;++i){
memset(visited,0,sizeof(visited));
cnt=0,cost=0;
bfs(i);
if(cnt==n) ans=min(cost,ans);
}
cout << ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |