Submission #11379165


Source Code Expand

#include<iostream>
#include<vector>
#include<cstring>
#include<set>
using namespace std;

class Graph{

    public:
    int V;
    
    // adjacency list of friends of every user(node)
    vector<int> *frend;
    
    // adjacency list of blocks of every user(node)
    vector<int> *block;

    set<int> component;

    Graph(int vertices){
        V=vertices;
        frend = new vector<int>[vertices];
        block = new vector<int>[vertices];
    }

    void addfriend(int p, int q){
        frend[p].push_back(q);
        frend[q].push_back(p);
    }

    void addblock(int p, int q){
        block[p].push_back(q);
        block[q].push_back(p);
    }

    int DFS(int v, bool *visited){

        visited[v]=true;
        component.insert(v);
        int count=1;
        vector<int>::iterator it;
        for(it=frend[v].begin(); it!=frend[v].end(); it++){
            if(!visited[*it]){
                count+=(DFS(*it,visited));
            }
        }
        return count;
    }

};

int main(){

    int n, m, k;
    cin >> n >> m >> k;

    Graph g(n);
    while (m--)
    {
        int u, v;
        cin >> u >> v;
        // subtracting 1 because in the graph the array will have addresses from 0 to n-1(means node-1 is node-0 and node-n is node-(n-1))
        u=u-1;
        v=v-1;
        g.addfriend(u,v);
    }
    
    while (k--)
    {
        int u, v;
        cin >> u >> v;
        u=u-1;
        v=v-1;
        g.addblock(u,v);
    }

    bool *visited = new bool[n];
    memset(visited,false,sizeof visited);

    // answer for every node-
    int ans[n]={};

    for(int i=0; i<n; i++){

        if(!visited[i]){

            g.component.clear();
            int comp_size=g.DFS(i,visited);

            set<int>::iterator itr;

            // iterating the large component and assigning the answer to every node in that component.
            for(itr=g.component.begin();itr!=g.component.end();itr++){

                ans[*itr]=(comp_size-1); // removing the node itself.
                ans[*itr]-=(g.frend[*itr].size()); // removing friends.

                // checking how many block node by i-th user has in the component.
                vector<int>::iterator it;
                for(it=g.block[*itr].begin(); it!=g.block[*itr].end(); it++){
                    if(g.component.count(*it)) ans[*itr]--;
                }
            }
        }
    }
    for(int i=0; i<n; i++) cout << ans[i] << " ";
    cout << "\n";
    return 0;
}

Submission Info

Submission Time
Task D - Friend Suggestions
User witcher98
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2576 Byte
Status WA
Exec Time 249 ms
Memory 17016 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 400
Status
AC × 3
AC × 25
WA × 5
Set Name Test Cases
Sample 00-sample-00, 00-sample-01, 00-sample-02
All 00-sample-00, 00-sample-01, 00-sample-02, 01-handmade-00, 01-handmade-01, 01-handmade-02, 01-handmade-03, 01-handmade-04, 01-handmade-05, 01-handmade-06, 02-small-00, 02-small-01, 02-small-02, 02-small-03, 02-small-04, 02-small-05, 02-small-06, 02-small-07, 02-small-08, 02-small-09, 03-large-00, 03-large-01, 03-large-02, 03-large-03, 03-large-04, 03-large-05, 03-large-06, 03-large-07, 03-large-08, 03-large-09
Case Name Status Exec Time Memory
00-sample-00 AC 1 ms 256 KiB
00-sample-01 AC 1 ms 256 KiB
00-sample-02 AC 1 ms 256 KiB
01-handmade-00 AC 1 ms 256 KiB
01-handmade-01 AC 1 ms 256 KiB
01-handmade-02 AC 80 ms 8576 KiB
01-handmade-03 AC 54 ms 5632 KiB
01-handmade-04 AC 249 ms 16640 KiB
01-handmade-05 AC 234 ms 17016 KiB
01-handmade-06 AC 144 ms 8448 KiB
02-small-00 WA 1 ms 256 KiB
02-small-01 WA 1 ms 256 KiB
02-small-02 AC 1 ms 256 KiB
02-small-03 WA 1 ms 256 KiB
02-small-04 WA 1 ms 256 KiB
02-small-05 AC 1 ms 256 KiB
02-small-06 AC 1 ms 256 KiB
02-small-07 AC 1 ms 256 KiB
02-small-08 WA 1 ms 256 KiB
02-small-09 AC 1 ms 256 KiB
03-large-00 AC 160 ms 10112 KiB
03-large-01 AC 178 ms 12416 KiB
03-large-02 AC 162 ms 10624 KiB
03-large-03 AC 145 ms 11776 KiB
03-large-04 AC 156 ms 10624 KiB
03-large-05 AC 143 ms 11264 KiB
03-large-06 AC 143 ms 9472 KiB
03-large-07 AC 178 ms 10496 KiB
03-large-08 AC 189 ms 14592 KiB
03-large-09 AC 229 ms 15744 KiB