Submission #500308

#TimeUsernameProblemLanguageResultExecution timeMemory
500308GenericAccountMonthly railway pass (LMIO18_menesinis_bilietas)C++17
0 / 100
3072 ms2212 KiB
#include<bits/stdc++.h> using namespace std; struct Group{ vector<int>miestai; vector<int>connections; void mergeGroup(Group g){ for(int m:g.miestai) miestai.push_back(m); for(int c:g.connections) if(find(connections.begin(), connections.end(), c)==connections.end()) connections.push_back(c); } bool hasCity(int city){ return (find(miestai.begin(), miestai.end(), city)!=miestai.end()); } bool hasConnection(int conn){ return (find(connections.begin(), connections.end(), conn)!=connections.end()); } }; int N,M; int find_group_with_city(vector<Group> grupes, int cityId) { int curr = 0; for (int i = 0; i < grupes.size(); i++) { if(grupes[i].hasCity(cityId))return i; } return -1; } void create_group(int cityId, vector<Group> & grupes) { Group g; g.miestai.push_back(cityId); grupes.push_back(g); } void change_ref(int from, int to, vector<Group> & grupes){ for(Group g: grupes){ for(int c: g.connections){ if(c==from)c=to; } } } //N-miestu skaicius M-transporto linijos void dumpGroups(vector<Group> grupes){ for (Group g : grupes) { for (int m : g.miestai) { cout<<m<<" "; } cout<<" ----> "; for (int c : g.connections) { cout<<c<<" "; } cout<<endl; } } int main() { cin >> N >> M; vector<Group> grupes; int a, b; char T; for (int i = 0; i < M; i++) { cin >> a >> b >> T; int aG = find_group_with_city(grupes, a); int bG = find_group_with_city(grupes, b); if (T == 'T') { // traukinys if (aG + bG == -2) { create_group(a, grupes); aG = grupes.size() - 1; } if (aG != -1 && bG == -1) { grupes[aG].miestai.push_back(b); } else if (aG == -1 && bG != -1) { grupes[bG].miestai.push_back(a); } else { // abu yra grupes[aG].mergeGroup(grupes[bG]); change_ref(bG, aG, grupes); grupes.erase(grupes.begin() + bG); } } else { if (aG == -1) { create_group(a, grupes); aG = grupes.size() - 1; } if (bG == -1) { create_group(b, grupes); bG = grupes.size() - 1; } if (!grupes[aG].hasConnection(bG)) grupes[aG].connections.push_back(bG); if (!grupes[bG].hasConnection(aG)) grupes[bG].connections.push_back(aG); } // rysiai[a-1][b-1]=T; // rysiai[b-1][a-1]=T; } int m=0; for (Group g : grupes) { if(g.connections.size()==grupes.size()-1){ //turi visas grupes m+=g.miestai.size(); } } cout<<m<<endl; }

Compilation message (stderr)

menesinis_bilietas.cpp: In function 'int find_group_with_city(std::vector<Group>, int)':
menesinis_bilietas.cpp:33:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<Group>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |   for (int i = 0; i < grupes.size(); i++) {
      |                   ~~^~~~~~~~~~~~~~~
menesinis_bilietas.cpp:31:7: warning: unused variable 'curr' [-Wunused-variable]
   31 |   int curr = 0;
      |       ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...