/* *********************************************** Author :yang12138 Created Time :2018年08月04日 星期六 22时15分45秒 File Name :1006.cpp ************************************************ */ #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define mem(a,b) memset(a,b,sizeof(a)) typedef long long ll; typedef pairpii; #define lson (root<<1) #define rson (root<<1|1) const int N=105; int fa[N]; void init(){ for(int i=0;i cal(char ch){ vectorve; for(int i=n-1;i<=m;i++){ memset(ban,0,sizeof(ban)); int sum=0,cnt=i-n+1; init(); for(int j=1;j<=cnt;j++){ sum+=e[j].w; if(e[j].c==ch) continue; int u=e[j].u,v=e[j].v; update(u,v); } int left=n-1; memset(vis,0,sizeof(vis)); for(int j=cnt+1;j<=m;j++){ if(e[j].c==ch) continue; int u=e[j].u,v=e[j].v; if(find_fa(u)==find_fa(v)) continue; update(u,v),left--,sum+=e[j].w,vis[j]=1; } for(int j=cnt+1;j<=m && left;j++){ if(!vis[j]) left--,sum+=e[j].w; } if(!check()) return vector(N,INF); ve.push_back(sum); } return ve; } void solve(int t){ cin>>n>>m; for(int i=1;i<=m;i++){ // scanf("%d %d %d %c",&e[i].u,&e[i].v,&e[i].w,&e[i].c); cin>>e[i].u>>e[i].v>>e[i].w>>e[i].c; e[i].id=i; dat[i]=e[i].w; } sort(e+1,e+m+1); printf("Case #%d:\n",t); if(mve[2]; ve[0]=cal('B'); ve[1]=cal('R'); for(int i=n-1;i<=m;i++){ int ans=min(ve[0][i-n+1],ve[1][i-n+1]); if(ans==INF) ans=-1; printf("%d\n",ans); } } int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int T,t=0; cin>>T; while(T--) solve(++t); return 0; }