Submission #568759

#TimeUsernameProblemLanguageResultExecution timeMemory
568759almothana05Bridges (APIO19_bridges)C++14
0 / 100
3088 ms25116 KiB
#include<bits/stdc++.h> #define mod 1000000007 #define inf 10000000000000000 using namespace std; vector<vector<int> >edge , q ,mst; vector<pair<int , int> >gr[100000]; int erg , vis[100000] , erge[100010] ; pair<int , int> f[100000]; void dfs(int x , int cmp){ // cout << x << ' ' << erg << "\n"; vis[x] = 1; erg++; for(int i = 0 ; i < gr[x].size() ; i++){ int kind = gr[x][i].first , val = gr[x][i].second; // cout << x << ' ' << kind << ' ' << val << "\n"; if(vis[kind] == 0 && val >= cmp){ dfs(kind , cmp); } } } int fater(int x){ if(f[x].first == x){ return x; } f[x].first = fater(f[x].first); return f[x].first; } void merge(int z , int x , int y){ // if(z == 1){ // cout << "ja\n"; // } while(q.size() > 0 && z < q[q.size() - 1][0]){ // cout << z <<' ' << q[q.size() - 1][0] << "\n" << q.size() << "\n"; // cout << q[q.size() - 1][1] << ' ' << f[fater(q[q.size() - 1][1])].first << "\n"; erge[q[q.size() - 1][2]] = f[fater(q[q.size() - 1][1])].second; q.pop_back(); } if(fater(x) != fater(y)){ // cout << x << ' ' << y << "\n\n"; f[fater(x)].second += f[fater(y)].second; f[fater(y)].first = fater(x); } } int main(){ // ios_base::sync_with_stdio(false); // cin.tie(NULL); int menge , numm , nummer , ed , cmp , comp ;; cin >> menge >> ed; for(int i = 0 ; i <= menge ; i++){ f[i] = {i , 1}; } for(int i = 0 ; i < ed ; i++){ cin >> numm >> nummer >> cmp; gr[numm].push_back({nummer , cmp}); gr[nummer].push_back({numm , cmp}); edge.push_back({numm , gr[numm].size() - 1 , nummer , gr[nummer].size() - 1}); mst.push_back({cmp , numm , nummer}); } int que; cin >> que; if(que > 10000 && menge > 1000){ sort(mst.begin() , mst.end()); for(int i = 0 ; i < que ; i++){ cin >> numm >> numm >> nummer; q.push_back({nummer , numm , i}); } sort(q.begin() , q.end()); for(int i = ed - 1 ; i >= 0 ; i--){ // numm = mst[i][]; merge(mst[i][0] , mst[i][1] , mst[i][2]); } while(q.size() > 0 ){ // cout << q[q.size() - 1][1] << ' ' << f[fater(q[q.size() - 1][1])].first << "\n"; erge[q[q.size() - 1][2]] = f[fater(q[q.size() - 1][1])].second; q.pop_back(); } for(int i = 0 ; i < que ; i++){ cout << erge[i] << "\n";; } return 0; } //////////////////////////////////////////////////////////////////////////////////////// while(que--){ // cout << "ja\n"; cin >> numm; if(numm == 1){ cin >> numm >> nummer; numm--; gr[edge[numm][0]][edge[numm][1]].second = nummer; gr[edge[numm][0]][edge[numm][1]].second = nummer; } else{ cin >> numm >> nummer; erg = 0; dfs(numm , nummer); cout << erg << "\n"; for(int i = 0 ; i <= menge ; i++){ vis[i] = 0; } } } }

Compilation message (stderr)

bridges.cpp: In function 'void dfs(int, int)':
bridges.cpp:13:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   13 |    for(int i = 0 ; i < gr[x].size() ; i++){
      |                    ~~^~~~~~~~~~~~~~
bridges.cpp: In function 'int main()':
bridges.cpp:57:46: warning: narrowing conversion of '(gr[numm].std::vector<std::pair<int, int> >::size() - 1)' from 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
   57 |       edge.push_back({numm , gr[numm].size() - 1 , nummer , gr[nummer].size() - 1});
      |                              ~~~~~~~~~~~~~~~~^~~
bridges.cpp:57:46: warning: narrowing conversion of '(gr[numm].std::vector<std::pair<int, int> >::size() - 1)' from 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
bridges.cpp:57:79: warning: narrowing conversion of '(gr[nummer].std::vector<std::pair<int, int> >::size() - 1)' from 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
   57 |       edge.push_back({numm , gr[numm].size() - 1 , nummer , gr[nummer].size() - 1});
      |                                                             ~~~~~~~~~~~~~~~~~~^~~
bridges.cpp:57:79: warning: narrowing conversion of '(gr[nummer].std::vector<std::pair<int, int> >::size() - 1)' from 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
bridges.cpp:48:43: warning: unused variable 'comp' [-Wunused-variable]
   48 |    int menge , numm , nummer , ed , cmp , comp ;;
      |                                           ^~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...