結果
| 問題 | No.748 yuki国のお財布事情 |
| コンテスト | |
| ユーザー |
akakimidori
|
| 提出日時 | 2018-10-22 14:59:47 |
| 言語 | C90(gcc12) (gcc 12.4.0) |
| 結果 |
AC
|
| 実行時間 | 31 ms / 2,000 ms |
| コード長 | 1,145 bytes |
| 記録 | |
| コンパイル時間 | 354 ms |
| コンパイル使用メモリ | 33,596 KB |
| 実行使用メモリ | 7,844 KB |
| 最終ジャッジ日時 | 2026-03-08 16:18:39 |
| 合計ジャッジ時間 | 1,061 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 26 |
コンパイルメッセージ
main.c: In function ‘run’:
main.c:29:3: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
29 | scanf("%d%d%d",&n,&m,&k);
| ^~~~~~~~~~~~~~~~~~~~~~~~
main.c:34:20: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
34 | for(i=0;i<m;i++) scanf("%d%d%d",a+i,b+i,c+i);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
main.c:39:5: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
39 | scanf("%d",&p);
| ^~~~~~~~~~~~~~
ソースコード
#include<stdio.h>
#include<stdlib.h>
typedef long long int int64;
int root(int *u,int x){
if(u[x]==x) return x;
return u[x]=root(u,u[x]);
}
int same(int *u,int x,int y){
return root(u,x)==root(u,y);
}
void unite(int *u,int x,int y){
x=root(u,x);
y=root(u,y);
if(x==y) return;
u[x]=y;
}
int cmp(const void *a,const void *b,void *d){
int *c=(int *)d;
return c[*(int *)a]-c[*(int *)b];
}
void run(void){
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
int *a=(int *)calloc(m,sizeof(int));
int *b=(int *)calloc(m,sizeof(int));
int *c=(int *)calloc(m,sizeof(int));
int i;
for(i=0;i<m;i++) scanf("%d%d%d",a+i,b+i,c+i);
int *u=(int *)calloc(n+1,sizeof(int));
for(i=0;i<=n;i++) u[i]=i;
for(i=0;i<k;i++){
int p;
scanf("%d",&p);
p--;
unite(u,a[p],b[p]);
c[p]=0;
}
int *p=(int *)calloc(m,sizeof(int));
for(i=0;i<m;i++) p[i]=i;
qsort_r(p,m,sizeof(int),cmp,c);
int64 sum=0;
for(i=0;i<m;i++){
int k=p[i];
if(c[k]==0) continue;
if(same(u,a[k],b[k])){
sum+=c[k];
} else {
unite(u,a[k],b[k]);
}
}
printf("%lld\n",sum);
}
int main(void){
run();
return 0;
}
akakimidori