# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
42488 | Hassoony | 시간이 돈 (balkan11_timeismoney) | C++14 | 2048 ms | 2028 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#include<unordered_map>
#define F first
#define S second
using namespace std;
typedef long long ll;
typedef long double D;
const ll inf=(1ll<<61);
const ll mod=1e9+7;
const int MX=209;
int n,m,vis[MX],x,y,t,c,vis1[MX][MX];
ll summoney,sumtime;
struct node{
int x,par;
ll time,cost;
node(){}
node(int x,ll time,ll cost,int par):x(x),time(time),cost(cost),par(par){}
};
vector<node>v[MX];
vector<int>v1[MX];
bool cmp(node A,node B){
if(summoney==0){
return A.cost*A.time>B.cost*B.time;
}
return 1ll*A.cost*sumtime+A.time*summoney>B.cost*sumtime+B.time*summoney;
}
vector<node>pq;
void pro(int x){
for(auto pp:v[x]){
if(vis[pp.x])continue;
pq.push_back(node(pp.x,pp.time,pp.cost,x));
}
}
int main(){
cin>>n>>m;
for(int i=0;i<m;i++){
scanf("%d%d%d%d",&x,&y,&t,&c);
v[x].push_back(node(y,t,c,0));
v[y].push_back(node(x,t,c,0));
}
pro(0);
vis[0]=1;
while(!pq.empty()){
sort(pq.begin(),pq.end(),cmp);
int x=pq.back().x;
int c=pq.back().cost,t=pq.back().time,par=pq.back().par;pq.pop_back();
if(vis[x])continue;
vis[x]=1;
if(!vis1[x][par])
v1[x].push_back(par);
vis1[x][par]=vis1[par][x]=1;
summoney+=c;
sumtime+=t;
pro(x);
}
cout<<sumtime<<" "<<summoney<<endl;
for(int i=0;i<n;i++){
for(auto pp:v1[i])cout<<i<<" "<<pp<<endl;
}
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |