이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "dreaming.h"
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int, int>
struct Tree{
vector<vector<pii>> adj;
vector<int> longest;
int min_len = 1e9;
};
vector<vector<pii>> adj;
vector<bool> vis;
vector<Tree> forest;
Tree sTree;
void get_tree(int id, int anc){
//cout<<id<<endl;
vis[id] = true;
int tree_id = sTree.adj.size();
sTree.adj.push_back(vector<pii>(0));
for(auto e: adj[id]){
if(e.first!=anc){
int future_id = sTree.adj.size();
get_tree(e.first, id);
sTree.adj[tree_id].push_back(pii(future_id, e.second));
sTree.adj[future_id].push_back(pii(tree_id, e.second));
}
}
//cout<<id<<" done "<<endl;
}
int get_len(int id, int anc, Tree& tr){
int ans = 0;
for(auto e: tr.adj[id]){
if(e.first!=anc){
ans = max(ans, get_len(e.first, id, tr)+1);
}
}
return ans;
}
signed travelTime(signed N,signed M, signed L,signed A[], signed B[], signed T[]) {
adj.resize(N);
vis.resize(N);
for(int i =0; i<M; i++){
adj[A[i]-1].push_back(pii(B[i]-1, T[i]));
adj[B[i]-1].push_back(pii(A[i]-1, T[i]));
}
for(int i = 0; i<N; i++){
if(!vis[i]){
//cerr<<i<<endl;
sTree.adj.clear();
get_tree(i, -1);
forest.push_back(sTree);
}
}
for(int j = 0; j<forest.size(); j++){
forest[j].longest.resize(forest[j].adj.size());
for(int i = 0; i<forest[j].adj.size(); i++){
forest[j].longest[i] = get_len(i, -1, forest[j]);
forest[j].min_len= min(forest[j].min_len, forest[j].longest[i]);
}
}
return forest[0].min_len + forest[1].min_len + L;
}
컴파일 시 표준 에러 (stderr) 메시지
dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:66:21: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<Tree>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
66 | for(int j = 0; j<forest.size(); j++){
| ~^~~~~~~~~~~~~~
dreaming.cpp:69:25: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::vector<std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
69 | for(int i = 0; i<forest[j].adj.size(); i++){
| ~^~~~~~~~~~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |