Submission #500308

# Submission time Handle Problem Language Result Execution time Memory
500308 2021-12-30T16:54:54 Z GenericAccount Monthly railway pass (LMIO18_menesinis_bilietas) C++17
0 / 100
3000 ms 2212 KB
#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

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 time Memory Grader output
1 Execution timed out 3072 ms 2212 KB Time limit exceeded
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 17 ms 336 KB Output is correct
4 Correct 1219 ms 896 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Execution timed out 3066 ms 2112 KB Time limit exceeded
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 17 ms 336 KB Output is correct
3 Correct 1219 ms 896 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Incorrect 61 ms 344 KB Output isn't correct
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Incorrect 61 ms 344 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Incorrect 61 ms 344 KB Output isn't correct
4 Halted 0 ms 0 KB -