Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
24197 | liuyile | 【BJ】T3 | C++ | 解答错误 | 0 | 385 MS | 24836 KB | 1843 | 2023-12-13 12:15:35 |
#include <iostream> #include <cstdio> #include <math.h> #include <algorithm> #include <istream> #include <string> #include <queue> #include <deque> #include <random> #include <stack> #include <set> #include <string.h> #include <map> #include <unordered_map> #include <sstream> #include <bitset> #include <fstream> #include <climits> #include <time.h> #include <cassert> using namespace std; #define endl "\n" #define int long long #define double long double #define pii pair<int, int> #define p1(x) (x).first #define p2(x) (x).second #define lc(x) ((x) << 1) #define rc(x) ((x) << 1 | 1) #define i128 __int128_t set<int>S[100300]; int n; int mn[100300],cmn[100300]; signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen("tribool.in","r",stdin); //freopen("tribool.out","w",stdout); int t; cin>>t; while(t--){ cin>>n; memset(mn,0x3f,sizeof(mn)); memset(cmn,0x3f,sizeof(cmn)); for(int i=1;i<=n;i++){ int p=0; cin>>p; S[i].clear(); while(p--){ int x; cin>>x; S[i].insert(x); } for(int x:S[i]){ if(mn[x]>S[i].size())cmn[x]=mn[x],mn[x]=S[i].size(); else if(cmn[x]>S[i].size())cmn[x]=S[i].size(); } } int res=1e9; for(int i=1;i<=n;i++){ vector<int>f; for(int x:S[i]) if(mn[x]==S[i].size())f.push_back(cmn[x]); else f.push_back(mn[x]); sort(f.begin(),f.end()); int ct=0; for(int x:f) ct++,res=min(res,x+ct); } cout<<res<<endl; } cout.flush(); return 0; }