int main() { int t,v,m,k,i,cnt=0; node *tmp; scanf("%d",&t); while(t--){ cnt=0; count=0; arti=0; scanf("%d %d %d",&v,&m,&k); for(i=0;i<m;i++){ int a,b; scanf("%d %d",&a,&b); input(a,b); } bft(v); tmp=ptr[0]; while(tmp) { cnt++; tmp=tmp->next; } if (cnt <= 1) arti--; printf("%d\n",arti*k); for(i=0;i<3004;i++) ptr[i]=NULL; } return 0; }
bool make_changable_training_sets_by_assignee(const list <const cRecord*> & record_pointers, const vector<string >& blocking_column_names, const vector < const cString_Manipulator *> & pstring_oper, const unsigned int limit, const vector <string> & training_filenames) { if ( training_filenames.size() != 2 ) throw cException_Other("Training: there should be 2 changeable training sets."); const string uid_identifier = cUnique_Record_ID::static_get_class_name(); cBlocking_For_Training bft (record_pointers, blocking_column_names, pstring_oper, uid_identifier, limit); cString_Remain_Same donotchange; cString_NoSpace_Truncate operator_truncate_firstname; cString_NoSpace_Truncate operator_truncate_lastname; vector <const cString_Manipulator*> t_extract_equal, t_extract_nonequal, x_extract_equal, x_extract_nonequal; std::ofstream outfile; //xset01 /* x_extract_nonequal.push_back(& donotchange); x_extract_equal.push_back(&donotchange); const string xset01_equal_name_array[] = {cApplyYear::static_get_class_name() }; const string xset01_nonequal_name_array[] = { cCity::static_get_class_name() }; const vector <string> xset01_equal_name_vec (xset01_equal_name_array, xset01_equal_name_array + sizeof(xset01_equal_name_array)/sizeof(string)); const vector <string> xset01_nonequal_name_vec (xset01_nonequal_name_array, xset01_nonequal_name_array + sizeof(xset01_nonequal_name_array)/sizeof(string)); bft.create_set(&cBlocking_For_Training::create_xset01_on_block, xset01_equal_name_vec, x_extract_equal, xset01_nonequal_name_vec, x_extract_nonequal); const char * current_file = training_filenames.at(0).c_str(); outfile.open(current_file); if ( ! outfile.good() ) throw cException_File_Not_Found(current_file); std::cout << "Creating " << current_file << " ..." << std::endl; bft.print(outfile, uid_identifier); outfile.close(); std::cout << "Done" << std::endl; */ outfile.open(training_filenames.at(0).c_str()); list < std::pair< const cRecord*, const cRecord*> > chosen_pairs; cPrint_Pair do_print(outfile, cUnique_Record_ID::static_get_class_name()); create_xset01( chosen_pairs, record_pointers, limit); std::for_each(chosen_pairs.begin(), chosen_pairs.end(), do_print); outfile.close(); std::cout << "Done" << std::endl; // tset05 operator_truncate_firstname.set_truncater(0, 1, true); operator_truncate_lastname.set_truncater(0, 2, true); t_extract_equal.push_back(& operator_truncate_firstname); t_extract_equal.push_back(& operator_truncate_lastname); bft.reset(blocking_column_names.size()); const string tset05_equal_name_array[] = { cFirstname::static_get_class_name(), cLastname::static_get_class_name()}; const string tset05_nonequal_name_array[] = {}; const vector <string> tset05_equal_name_vec (tset05_equal_name_array, tset05_equal_name_array + sizeof(tset05_equal_name_array)/sizeof(string)); const vector <string> tset05_nonequal_name_vec (tset05_nonequal_name_array, tset05_nonequal_name_array + sizeof(tset05_nonequal_name_array)/sizeof(string)); bft.create_set(&cBlocking_For_Training::create_tset05_on_block, tset05_equal_name_vec, t_extract_equal, tset05_nonequal_name_vec, t_extract_nonequal ); const char * current_file = training_filenames.at(1).c_str(); outfile.open(current_file); if ( ! outfile.good() ) throw cException_File_Not_Found(current_file); std::cout << "Creating " << current_file << " ..." << std::endl; bft.print(outfile, uid_identifier); outfile.close(); std::cout << "Done" << std::endl; return true; }
bool make_changable_training_sets_by_patent(const list <const cRecord*> & record_pointers, const vector<string >& blocking_column_names, const vector < const cString_Manipulator *> & pstring_oper, const unsigned int limit, const vector <string> & training_filenames) { if ( training_filenames.size() != 2 ) throw cException_Other("Training: there should be 2 changeable training sets."); const bool is_coauthor_active = cCoauthor::static_is_comparator_activated(); const bool is_class_active = cClass::static_is_comparator_activated(); if ( ! is_coauthor_active ) cCoauthor::static_activate_comparator(); if ( ! is_class_active ) cClass::static_activate_comparator(); const string uid_identifier = cUnique_Record_ID::static_get_class_name(); cBlocking_For_Training bft (record_pointers, blocking_column_names, pstring_oper, uid_identifier, limit); cString_Remain_Same donotchange; vector <const cString_Manipulator*> t_extract_equal, t_extract_nonequal, x_extract_equal, x_extract_nonequal; x_extract_equal.push_back(& donotchange); x_extract_nonequal.push_back(& donotchange); x_extract_nonequal.push_back(&donotchange); std::ofstream outfile; //xset01 const string xset01_equal_name_array[] = {cApplyYear::static_get_class_name() }; const string xset01_nonequal_name_array[] = { cAsgNum::static_get_class_name(), cCity::static_get_class_name() }; const vector <string> xset01_equal_name_vec (xset01_equal_name_array, xset01_equal_name_array + sizeof(xset01_equal_name_array)/sizeof(string)); const vector <string> xset01_nonequal_name_vec (xset01_nonequal_name_array, xset01_nonequal_name_array + sizeof(xset01_nonequal_name_array)/sizeof(string)); bft.create_set(&cBlocking_For_Training::create_xset01_on_block, xset01_equal_name_vec, x_extract_equal, xset01_nonequal_name_vec, x_extract_nonequal); const char * current_file = training_filenames.at(0).c_str(); outfile.open(current_file); if ( ! outfile.good() ) throw cException_File_Not_Found(current_file); std::cout << "Creating " << current_file << " ..." << std::endl; bft.print(outfile, uid_identifier); outfile.close(); std::cout << "Done" << std::endl; // tset05 bft.reset(blocking_column_names.size()); const string tset05_equal_name_array[] = {}; const string tset05_nonequal_name_array[] = {}; const vector <string> tset05_equal_name_vec (tset05_equal_name_array, tset05_equal_name_array + sizeof(tset05_equal_name_array)/sizeof(string)); const vector <string> tset05_nonequal_name_vec (tset05_nonequal_name_array, tset05_nonequal_name_array + sizeof(tset05_nonequal_name_array)/sizeof(string)); bft.create_set(&cBlocking_For_Training::create_tset05_on_block, tset05_equal_name_vec, t_extract_equal, tset05_nonequal_name_vec, t_extract_nonequal ); current_file = training_filenames.at(1).c_str(); outfile.open(current_file); if ( ! outfile.good() ) throw cException_File_Not_Found(current_file); std::cout << "Creating " << current_file << " ..." << std::endl; bft.print(outfile, uid_identifier); outfile.close(); std::cout << "Done" << std::endl; if ( ! is_coauthor_active ) cCoauthor::static_deactivate_comparator(); if ( ! is_class_active ) cClass::static_deactivate_comparator(); return true; }