結果
| 問題 | No.399 動的な領主 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-07-16 16:13:08 |
| 言語 | C90 (gcc 12.4.0) |
| 結果 |
CE
(最新)
TLE
(最初)
|
| 実行時間 | - |
| コード長 | 1,119 bytes |
| 記録 | |
| コンパイル時間 | 85 ms |
| コンパイル使用メモリ | 21,832 KB |
| 最終ジャッジ日時 | 2026-02-23 21:52:58 |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.c:28:26: error: C++ style comments are not allowed in ISO C90
28 | int search(u,v,parent,m) // @u search v -> returns the #edge between u,v
| ^
main.c:28:26: note: (this will be reported only once per input file)
main.c: In function ‘main’:
main.c:52:5: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
52 | scanf("%d", &n);
| ^~~~~~~~~~~~~~~
main.c:55:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
55 | scanf("%d%d", &u, &v);
| ^~~~~~~~~~~~~~~~~~~~~
main.c:60:5: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
60 | scanf("%d", &q);
| ^~~~~~~~~~~~~~~
main.c:63:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
63 | scanf("%d%d",&a[i],&b[i]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
/*
* N
* u1 v1
* ..
* un vn
* Q : Q people
* A1 B1
* ..
* AQ BQ
*/
#include "stdio.h"
int node[16384][16384];
int a[16384], b[16384], tax[16384];
int taxsum = 0;
int COMPLETE = 0;
void push(u,v) {
++node[u][0];
node[u][node[u][0]] = v;
}
void pay(t) {
taxsum += t;
}
int search(u,v,parent,m) // @u search v -> returns the #edge between u,v
{
int i,ret=1;
pay(++tax[u]);
for (i=1;i<=node[u][0];i++){
if (COMPLETE) return ret;
if (parent == node[u][i]) continue;
else if (node[u][i] == v) {
pay(++tax[v]);
COMPLETE=1;
return ret;
}
else ret += search(node[u][i],v,u,m);
}
if (COMPLETE) return ret;
pay(-(tax[u]--));
return 0;
}
int main(int argc, char** argv)
{
int i,j,n,u,v,q;
scanf("%d", &n);
for (i=1; i <= n-1; i++)
{
scanf("%d%d", &u, &v);
push(u,v);
push(v,u);
}
scanf("%d", &q);
for (i=0; i<q; i++)
{
scanf("%d%d",&a[i],&b[i]);
COMPLETE=0;
search(a[i],b[i],-1,i);
}
printf("%d\n",taxsum);
}