結果
| 問題 |
No.1605 Matrix Shape
|
| コンテスト | |
| ユーザー |
publfl
|
| 提出日時 | 2021-07-16 22:13:00 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,132 bytes |
| コンパイル時間 | 425 ms |
| コンパイル使用メモリ | 50,688 KB |
| 実行使用メモリ | 26,496 KB |
| 最終ジャッジ日時 | 2024-07-06 09:31:59 |
| 合計ジャッジ時間 | 2,996 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 33 WA * 1 |
コンパイルメッセージ
main.cpp: In function 'int main()':
main.cpp:61:21: warning: 'p' may be used uninitialized [-Wmaybe-uninitialized]
61 | int p,q;
| ^
ソースコード
#include <stdio.h>
#include <vector>
int check[200010],check2[200010];
std::vector<int> V[200010];
void func(int k)
{
if(check2[k]) return;
check2[k] = 1;
for(int i=0;i<V[k].size();i++) func(V[k][i]);
}
int in[200010],out[200010];
int main()
{
int a;
scanf("%d",&a);
for(int i=1;i<=a;i++)
{
int b,c;
scanf("%d%d",&b,&c);
check[b] = check[c] = 1;
V[b].push_back(c);
out[b]++, in[c]++;
}
int s1 = 0, s2 = 0;
for(int i=1;i<=200000;i++)
{
if(out[i]-in[i]==1) s1++;
if(in[i]-out[i]==1) s2++;
}
if(s1==0&&s2==0)
{
for(int i=1;i<=200000;i++)
{
if(check[i]==1)
{
func(i);
break;
}
}
for(int i=1;i<=200000;i++)
{
if(check[i]==1&&check2[i]==0)
{
printf("0");
return 0;
}
}
int ans = 0;
for(int i=1;i<=200000;i++) if(check[i]==1) ans++;
printf("%d",ans);
}
else if(s1==1&&s2==1)
{
int p,q;
for(int i=1;i<=200000;i++)
{
if(out[i]-in[i]==1) p = i;
if(in[i]-out[i]==1) q = i;
}
func(p);
for(int i=1;i<=200000;i++)
{
if(check[i]==1&&check2[i]==0)
{
printf("0");
return 0;
}
}
printf("1");
}
else printf("0");
}
publfl