题目描述
Tyvj已经一岁了,网站也由最初的几个用户增加到了上万个用户,随着Tyvi网站的逐步壮大,管理员的数目也越来越多,现在你身为Tyvj管理层的联络员,希望你找到一些通信渠道,使得管理员两两都可以联络(直接或者间接都可以)。Tyvj是一个公益性的网站,没有过多利润,所以你要尽可能地使费用少才可以。
目前你已经知道,Tyvi的通信渠道分为两大类,一类是必选通信渠道,无论价格多少,你都需要把所有的都选择上;还有一类是选择性的通信渠道,你可以从中挑选一些作为最终管理员联络的通信渠道。数据保证给出的通行渠道可以让所有的管理员连通。
输入
第1行:n、m表示Tyvi一共有n个管理员,有m个通信渠道。(n<=2000,m<=10000)
第2行到m+1行:每行四个非负整数p,u,v,w,当p=1时,表示这个通信渠道为必选通信渠道;;当p=2时,表示这个通信渠道为选择性通信渠道;u,v,w表示本条信息描述的是u、v管理员之间的通信渠道,u可以收到v的信息,v也可以收到u的信息,w表示费用。
输出
最小的通信费用。
样例输入
5 6
1 1 2 1
1 2 3 1
1 3 4 1
1 4 1 1
2 2 5 10
2 2 5 5
样例输出
9
提示
u,v之间可能存在多条通信渠道,你的程序应该累加所有u,v之间的必选通道
//相信大家都知道下一步该怎么了,那当然是,优化!!!
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma