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 |
|
|
| 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 |