Advertisement
vlatkovski

E-poraki

Jun 5th, 2017
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.64 KB | None | 0 0
  1. #include <iostream>
  2. #include <set>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. struct User {
  8.     int id;
  9.     set<int> sent;
  10.     set<int> received;
  11. };
  12.  
  13. int findUserOrAdd(vector<User>& users, int id) {
  14.     for (unsigned int i = 0; i < users.size(); ++i) {
  15.         if (users[i].id == id) {
  16.             return i; //return index of user
  17.         }
  18.     }
  19.  
  20.     //create new user and add them
  21.     User u = {id};
  22.     users.push_back(u);
  23.  
  24.     return users.size() - 1; //return index of new user
  25. }
  26.  
  27.  
  28. int main() {
  29.     int n, k; //number of users, number of messages
  30.     cin >> n >> k;
  31.  
  32.     vector<User> users;
  33.  
  34.     for (int i = 0; i < k; ++i) {
  35.         int sId, rId; //senderId, receiverId
  36.         cin >> sId >> rId;
  37.  
  38.         int sui = findUserOrAdd(users, sId); //get index of user with id=sId (or make new)
  39.         users[sui].sent.insert(rId);
  40.  
  41.         int rui = findUserOrAdd(users, rId); //get index of user with id=rId (or make new)
  42.         users[rui].received.insert(sId);
  43.     }
  44.  
  45.     int BROJ = 0;
  46.  
  47.     for (unsigned int i = 0; i < users.size(); ++i) {
  48.         User u = users[i];
  49.         //cout << "user_id:" << u.id << endl;
  50.  
  51.         set<int>::iterator rit; //set iterator
  52.         for (rit = u.received.begin(); rit != u.received.end(); ++rit) {
  53.             int sid = *rit; //sender id
  54.             //cout << "\tsender_id:" << sid << endl;
  55.  
  56.             if (u.sent.find(sid) == u.sent.end()) { //ako vo "received", vektor od lugje od koj primil u, NEMA id na nekoj na koj mu pratil
  57.                 BROJ++;
  58.                 //cout << "\tbroj e sega " << BROJ << endl;
  59.             }
  60.         }
  61.     }
  62.  
  63.     cout << BROJ << endl;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement