제출 #220881

#제출 시각아이디문제언어결과실행 시간메모리
220881Ruxandra985Cities (BOI16_cities)C++14
0 / 100
122 ms8056 KiB
#include <bits/stdc++.h>
#define DIMN 100010
using namespace std;
int tt[DIMN] , sp[DIMN];
long long sum[DIMN];
pair <int , pair <int,int> > v[2 * DIMN];
int root (int x){

    while (tt[x] > 0)
        x = tt[x];

    return x;

}
int main()
{
    FILE *fin = stdin;
    FILE *fout = stdout;
    int n , m , k , i , j , x , y , rx , ry , cost;
    fscanf (fin,"%d%d%d",&n,&k,&m);

    for (i = 1 ; i <= k ; i++)
        fscanf (fin,"%d",&sp[i]);

    for (i = 1 ; i <= m ; i++)
        fscanf (fin,"%d%d%d",&v[i].second.first , &v[i].second.second , &v[i].first);

    sort (v + 1 , v + m + 1);

    for (i = 1 ; i <= n ; i++)
        tt[i] = -1;

    for (i = 1 ; i <= m ; i++){
        x = v[i].second.first;
        y = v[i].second.second;
        cost = v[i].first;

        rx = root(x);
        ry = root(y);

        if (rx != ry){

            if (tt[rx] < tt[ry]){
                tt[rx] += tt[ry];
                tt[ry] = rx;

                sum[rx] += sum[ry] + cost;
            }
            else {
                tt[ry] += tt[rx];
                tt[rx] = ry;

                sum[ry] += sum[rx] + cost;
            }

        }

        for (j = 2 ; j <= k ; j++){
            if (root(sp[j]) != root(sp[j - 1]))
                break;
        }

        if (j > k)
            break;

    }
    fprintf (fout,"%lld",sum[root(sp[1])]);
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

cities.cpp: In function 'int main()':
cities.cpp:20:12: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     fscanf (fin,"%d%d%d",&n,&k,&m);
     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
cities.cpp:23:16: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         fscanf (fin,"%d",&sp[i]);
         ~~~~~~~^~~~~~~~~~~~~~~~~
cities.cpp:26:16: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         fscanf (fin,"%d%d%d",&v[i].second.first , &v[i].second.second , &v[i].first);
         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...