丢下题解就走:http://www.cnblogs.com/autsky-jadek/p/3959446.html
贴吧的讨论:http://tieba.baidu.com/p/3357839800
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#define cl(x) memset(x,0,sizeof(x))
using namespace std;
typedef pair<int,int> abcd;
typedef long long ll;
inline char nc()
{
static char buf[100000],*p1=buf,*p2=buf;
if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; }
return *p1++;
}
inline void read(int &x)
{
char c=nc(),b=1;
for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1;
for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;
}
const int N=205;
const int M=10005;
namespace Tset{
int fat[N],rank[N];
inline void init(int n){
for (int i=1;i<=n;i++) fat[i]=i,rank[i]=0;
}
inline int Fat(int u){
return u==fat[u]?u:fat[u]=Fat(fat[u]);
}
inline bool Union(int x,int y){
x=Fat(x); y=Fat(y); if (x==y) return 0;
if (rank[x]>rank[y]) swap(x,y);
if (rank[x]==rank[y]) rank[y]++;
fat[y]=x; return 1;
}
}
int n,m;
struct edge{
int u,v,w,a,b;
bool operator < (const edge &B) const{
return w==B.w?(a==B.a?b<B.b:a<B.a):w<B.w;
}
}E[M];
inline abcd Krus(){
using namespace Tset;
int t1=0,t2=0; init(n);
sort(E+1,E+m+1);
for (int i=1;i<=m;i++)
if (Union(E[i].u,E[i].v))
t1+=E[i].a,t2+=E[i].b;
return abcd(t1,t2);
}
ll ans=1LL<<60; int suma,sumb;
void find(abcd l,abcd r)
{
for (int i=1;i<=m;i++)
E[i].w=-E[i].a*(r.second-l.second)-E[i].b*(l.first-r.first);
abcd mid=Krus();
if(mid==l || mid==r){
if ((ll)l.first*l.second<ans || ((ll)l.first*l.second==ans && l.first<suma))
ans=(ll)l.first*l.second,suma=l.first,sumb=l.second;
if ((ll)r.first*r.second<ans || ((ll)r.first*r.second==ans && r.first<suma))
ans=(ll)r.first*r.second,suma=r.first,sumb=r.second;
return;
}
find(l,mid),find(mid,r);
}
int main()
{
abcd L,R;
freopen("t.in","r",stdin);
freopen("t.out","w",stdout);
read(n); read(m);
for (int i=1;i<=m;i++) read(E[i].u),read(E[i].v),read(E[i].a),read(E[i].b),E[i].u++,E[i].v++;
for (int i=1;i<=m;i++) E[i].w=E[i].a;
L=Krus();
for (int i=1;i<=m;i++) E[i].w=E[i].b;
R=Krus();
find(L,R);
printf("%d %d\n",suma,sumb);
return 0;
}