# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1220738 | sleepntsheep | Cheap flights (LMIO18_pigus_skrydziai) | C++17 | 140 ms | 50868 KiB |
#include <cstdio>
#include <vector>
#include <map>
#include <utility>
#include <algorithm>
#define N 700050
using namespace std;
int tc, m,n, a[N], b[N], c[N]
;
long long suma[N * 2];
vector<pair<int, int> > g[N * 2];
long long get(int u,int v){
for(auto[_,w]:g[u])if(w==v)return -_;
return 0;
}
int main() {
tc=1;
while (tc--) {
scanf("%d%d", &n,&m);
for (int i = 0; i < m; ++i) {
scanf("%d%d%d", a + i, b + i, c + i);
suma[a[i]] += c[i], suma[b[i]] += c[i];
g[a[i]].emplace_back(-c[i], b[i]),
g[b[i]].emplace_back(-c[i], a[i]);
}
for(int i=1;i<=2*n;++i){
sort(g[i].begin(),g[i].end());
if(g[i].size()>2)
g[i].resize(2);
}
long long answer = 0;
for (int i = 1; i <= 2 * n; ++i)
answer = max(answer, suma[i]);
for (int i=1;i<=2*n;++i){
if(g[i].size()<2)continue;
int u=g[i][0].second,v=g[i][1].second;
answer=max(answer,0ll-g[i][0].first-g[i][1].first+get(u,v));
}
printf("%lld\n", answer);
for (int i=0;i<=2*n;++i)suma[i]=0, g[i].clear();
}
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | 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... |