提出 #73540108
ソースコード 拡げる
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
typedef long long ll;
typedef pair<ll,ll> PII;
typedef array<ll,2> a2;
typedef array<ll,3> a3;
int n,m,k;
ll a[N],b[N],c[N];
vector<int> e[N];
bool tf[N];
int dfn[N],low[N],hgs;
int rd[N];
int id[N],scccnt;
int st[N],tt=-1;
int sz[N];
bool instack[N];
void tarjan(int u){
dfn[u]=low[u]=++hgs;
st[++tt]=u,instack[u]=1;
for(auto j:e[u]){
if(!dfn[j]){
tarjan(j);
low[u]=min(low[u],low[j]);
}else if(instack[j]) low[u]=min(low[u],dfn[j]);
}
if(dfn[u]==low[u]){
++scccnt;
int y;
do{
y=st[tt--];
instack[y]=0;
id[y]=scccnt;
sz[scccnt]++;
}while(y!=u);
}
}
void 打卡啦摩托(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i]>>b[i]>>c[i];
for(int i=1;i<=n;i++) e[i].clear();
{
vector<a2> v;
for(int i=1;i<=n;i++) v.push_back({a[i],i});
sort(v.begin(),v.end(),greater<a2>());
for(int i=1;i<n;i++){
int u=v[i][1],uu=v[i-1][1];
e[uu].push_back(u);
if(v[i][0]==v[i-1][0]) e[u].push_back(uu);
}
}
{
vector<a2> v;
for(int i=1;i<=n;i++) v.push_back({b[i],i});
sort(v.begin(),v.end(),greater<a2>());
for(int i=1;i<n;i++){
int u=v[i][1],uu=v[i-1][1];
e[uu].push_back(u);
if(v[i][0]==v[i-1][0]) e[u].push_back(uu);
}
}
{
vector<a2> v;
for(int i=1;i<=n;i++) v.push_back({c[i],i});
sort(v.begin(),v.end(),greater<a2>());
for(int i=1;i<n;i++){
int u=v[i][1],uu=v[i-1][1];
e[uu].push_back(u);
if(v[i][0]==v[i-1][0]) e[u].push_back(uu);
}
}
for(int i=1;i<=n;i++){
dfn[i]=0,low[i]=0,instack[i]=0,id[i]=0,st[i]=0,sz[i]=0;
rd[i]=0;
}
hgs=0,scccnt=0,tt=-1;
for(int i=1;i<=n;i++){
if(!dfn[i]) tarjan(i);
}
for(int i=1;i<=n;i++){
for(auto j:e[i]){
// cout<<i<<" "<<j<<endl;
if(id[i]!=id[j])
rd[id[j]]++;
}
}
int ct=0,ctsz=0;
for(int i=1;i<=scccnt;i++){
if(rd[i]==0){
ct++;
if(ct>=2) ctsz=0;
else ctsz=sz[i];
}
}
// cout<<ct<<endl;
cout<<ctsz<<"\n";
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int _=1;
cin>>_;
while(_--){
打卡啦摩托();
}
}
提出情報
| 提出日時 |
|
| 問題 |
C - Strong Surname |
| ユーザ |
zhishengie |
| 言語 |
C++23 (GCC 15.2.0) |
| 得点 |
600 |
| コード長 |
2670 Byte |
| 結果 |
AC |
| 実行時間 |
162 ms |
| メモリ |
40796 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
600 / 600 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_01.txt |
| All |
00_sample_01.txt, hand-12.txt, hand-13.txt, hand-14.txt, hand-15.txt, hand-16.txt, hand-17.txt, hand-18.txt, hand-19.txt, hand-20.txt, hand-21.txt, hand-22.txt, random-01.txt, random-02.txt, random-03.txt, random-04.txt, random-05.txt, random-06.txt, random-07.txt, random-08.txt, random-09.txt, random-10.txt, random-11.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_01.txt |
AC |
5 ms |
3804 KiB |
| hand-12.txt |
AC |
52 ms |
3556 KiB |
| hand-13.txt |
AC |
88 ms |
8092 KiB |
| hand-14.txt |
AC |
162 ms |
38000 KiB |
| hand-15.txt |
AC |
153 ms |
38892 KiB |
| hand-16.txt |
AC |
157 ms |
38956 KiB |
| hand-17.txt |
AC |
84 ms |
7888 KiB |
| hand-18.txt |
AC |
83 ms |
8296 KiB |
| hand-19.txt |
AC |
102 ms |
21908 KiB |
| hand-20.txt |
AC |
90 ms |
8072 KiB |
| hand-21.txt |
AC |
84 ms |
8244 KiB |
| hand-22.txt |
AC |
39 ms |
7800 KiB |
| random-01.txt |
AC |
39 ms |
3776 KiB |
| random-02.txt |
AC |
45 ms |
3652 KiB |
| random-03.txt |
AC |
62 ms |
3928 KiB |
| random-04.txt |
AC |
87 ms |
7992 KiB |
| random-05.txt |
AC |
103 ms |
14396 KiB |
| random-06.txt |
AC |
118 ms |
23888 KiB |
| random-07.txt |
AC |
152 ms |
40700 KiB |
| random-08.txt |
AC |
154 ms |
40796 KiB |
| random-09.txt |
AC |
151 ms |
40688 KiB |
| random-10.txt |
AC |
151 ms |
40744 KiB |
| random-11.txt |
AC |
160 ms |
40620 KiB |