QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#197482 | #6503. DFS Order 3 | vanthoci# | TL | 1ms | 3468kb | C++17 | 1.8kb | 2023-10-02 16:26:43 | 2023-10-02 16:26:43 |
Judging History
answer
#include<bits/stdc++.h>
#define fer(i,a,b) for(int i = a ; i <= b ; i ++)
const int N = 2e3 + 10 ;
using namespace std;
int f[N] ;
int a[N][N] ;
int find(int x)
{
return f[x] == x ? f[x] : f[x] = find(f[x]) ;
}
vector<pair<int,int>> res ;
int id[N] ;
void de(vector<int> v)
{
for(auto i : v)
cout << i << " " ;
cout << '\n' ;
}
void merge(int a , int b)
{
int pa = find(a) , pb = find(b) ;
if(pa != pb)
{
f[pa] = pb ;
res.push_back({a , b}) ;
}
}
void solution(){
int n;
cin>>n;
res.clear() ;
fer(i,1,n) f[i] = i , id[i] = 1 ;
for(int i = 1 ; i <= n ; i ++)
{
fer(j,1,n)
cin >> a[i][j] ;
if(n >= 2)
merge(a[i][1] , a[i][2]) ;
}
while(true)
{
set<int> q ;
int ff = 0 ;
fer(i,1,n)
{
int f = 0 ;
while( id[i] <= n && find(a[i][id[i]]) == find(a[i][id[i] + 1]) )
id[i] ++ ;
//de(vector<int>{id[i] , id[i] + 1 , a[i][id[i]] , a[i][id[i] + 1] , find(a[i][id[i]]) , find(a[i][id[i] + 1]) }) ;
if(id[i] + 1 <= n)
{
//cout << a[i][id[i] + 1] << '\n' ;
q.insert(a[i][id[i] + 1]) , f = 1 ;
}
//cout << id[i] << '\n' ;
if(f)
ff = 1 ;
}
if(!ff)
break ;
merge(*q.begin(),*++q.begin()) ;
}
sort(res.begin(),res.end()) ;
for(auto i : res)
cout << i.first << " " << i.second << '\n' ;
return ;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int T; cin >> T;
while (T--) solution();
return 0;
}
/*
1 2
1 2
3 2
1 2
3 2
4 2
1 2
1 3
2 4
3 5
*/
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 3468kb
input:
4 2 1 2 2 1 3 1 2 3 2 1 3 3 2 1 4 1 2 3 4 2 1 3 4 3 2 4 1 4 2 1 3 5 1 2 4 3 5 2 4 1 3 5 3 5 1 2 4 4 2 1 3 5 5 3 1 2 4
output:
1 2 1 2 3 2 1 2 3 2 4 2 1 2 1 3 2 4 3 5
result:
ok correct answer! (4 test cases)
Test #2:
score: -100
Time Limit Exceeded
input:
20000 10 1 2 4 5 6 7 3 8 10 9 2 1 4 5 6 7 3 8 10 9 3 8 1 2 4 5 6 7 10 9 4 5 6 7 1 2 3 8 10 9 5 4 6 7 1 2 3 8 10 9 6 7 4 5 1 2 3 8 10 9 7 6 4 5 1 2 3 8 10 9 8 3 1 2 4 5 6 7 10 9 9 10 1 2 4 5 6 7 3 8 10 1 2 4 5 6 7 3 8 9 10 1 4 3 8 2 9 6 5 7 10 2 8 9 6 3 4 1 5 7 10 3 8 2 9 6 4 1 5 7 10 4 1 3 8 2 9 6 5...