Пример #1
0
void Solve::solve(FILE *fin, FILE *fout)
{
	fscanf(fin, "%d%d%d", &nVtx, &nEdge, &nQuery);
	for(int i = 0; i < nVtx; i ++)
		mkset(i);
	for(int i = 0; i < nEdge; i ++)
		fscanf(fin, "%d%d%d", &edge[i].u, &edge[i].v, &edge[i].w);
	std::sort(edge, edge + nEdge);
	for(int i = 0; i < nQuery; i ++)
	{
		query[i].idx = i;
		fscanf(fin, "%d", &query[i].val);
	}
	std::sort(query, query + nQuery);
	int edgeIt = 0;
	Val_t ansCnt = 0;
	for(int i = 0; i < nQuery; i ++)
	{
		while(edgeIt < nEdge && edge[edgeIt].w <= query[i].val)
		{
			int u = edge[edgeIt].u - 1, v = edge[edgeIt].v - 1;
			int p = findset(u);
			int q = findset(v);
			if(p != q)
			{
				ansCnt += cnt[p] * cnt[q];
				mergeset(p, q);
			}
			edgeIt ++;
		}
		ans[query[i].idx] = ansCnt;
	}
	for(int i = 0; i < nQuery; i ++)
		fprintf(fout, VAL_T_FMT "\n", ans[i]);
}
Пример #2
0
int N_insert_db(T_Connect *conn,char *tabname,void *data,T_PkgType *tp)
{
char stmt[32768];
char *p;
T_CLI_Var *clip;
	clip=(T_CLI_Var *)conn->Var;
	p=stmt;
        p+=sprintf(p,"INSERT INTO ");
        if(*clip->DBOWN)
                p+=sprintf(p,"%s.",clip->DBOWN);
        p+=sprintf(p,"%s (",tabname);
	p=mkset(p,tp);
	p+=sprintf(p,") VALUES(");
	p=mk_values(p,data,tp);
	p+=sprintf(p,")");
        return N_SQL_Exec(conn,stmt);
}