제출 #707859

#제출 시각아이디문제언어결과실행 시간메모리
707859ToroTNBitaro’s Party (JOI18_bitaro)C++14
14 / 100
1322 ms413376 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back #define X first #define Y second int n,m,t,u_i,v_i,num,ban[100005],root=sqrt(100000),dp[100005]; int hsh[100005],party,hsh2[100005],ans; int bug,bug2; vector<int> from[100005]; vector<pair<int,int> > best[100005]; vector<pair<int,int> > merge(vector<pair<int,int> > v1,vector<pair<int,int> > v2) { /*if(bug==6&&bug2==5) { printf("v1\n"); for(int i=0;i<v1.size();i++) { printf("%d %d\n",v1[i].X,v1[i].Y); } printf("\n"); printf("v2\n"); for(int i=0;i<v2.size();i++) { printf("%d %d\n",v2[i],v2[i].Y); } printf("\n"); }*/ // printf("v1\n"); // for(int i=0;i<v1.size();i++) // { // printf("%d %d\n",v1[i].X,v1[i].Y); // } // printf("\n"); // printf("v2\n"); // for(int i=0;i<v2.size();i++) // { // printf("%d %d\n",v2[i],v2[i].Y); // } // printf("\n"); vector<pair<int,int> > v; int it1=0,it2=0,it=0; while(1) { if(v.size()==root)break; if(it1==v1.size()&&it2==v2.size())break; if(it1==v1.size()) { if(hsh2[v2[it2].Y]==0) { hsh2[v2[it2].Y]=1; v.pb({v2[it2].X+1,v2[it2].Y}); } ++it2; }else if(it2==v2.size()) { if(hsh2[v1[it1].Y]==0) { hsh2[v1[it1].Y]=1; v.pb(v1[it1]); } ++it1; }else { if(v1[it1].X>v2[it2].X+1) { if(hsh2[v1[it1].Y]==0) { hsh2[v1[it1].Y]=1; v.pb(v1[it1]); } ++it1; }else { if(hsh2[v2[it2].Y]==0) { hsh2[v2[it2].Y]=1; v.pb({v2[it2].X+1,v2[it2].Y}); } ++it2; } } ++it; } for(int i=0;i<v1.size();i++)hsh2[v1[i].Y]=0; for(int i=0;i<v2.size();i++)hsh2[v2[i].Y]=0; /*if(bug==6&&bug2==5) { printf("vvv\n"); for(int i=0;i<v.size();i++) { printf("%d %d\n",v[i].X,v[i].Y); } }*/ /*printf("vvv\n"); for(int i=0;i<v.size();i++) { printf("%d %d\n",v[i].X,v[i].Y); }*/ return v; } int main() { ios_base::sync_with_stdio(0),cin.tie(0); //root=-1; cin >> n >> m >> t; for(int i=1;i<=m;i++) { cin >> u_i >> v_i; from[v_i].pb(u_i); } for(int i=1;i<=n;i++) { //printf("iiiiiiiiiiii=%d\n",i); best[i].pb({0,i}); for(auto node:from[i]) { //printf("node=%d\n",node); bug=i; bug2=node; best[i]=merge(best[i],best[node]); /*if(i==6) { printf("node=%d\n",node); for(int j=0;j<best[i].size();j++) { printf("%d %d\n",best[i][j].X,best[i][j].Y); } }*/ } } /*for(int i=1;i<=n;i++) { printf("i=%d\n",i); for(int j=0;j<best[i].size();j++) { printf("%d %d\n",best[i][j].X,best[i][j].Y); } }*/ while(t--) { cin >> party >> num; for(int i=1;i<=num;i++) { cin >> ban[i]; hsh[ban[i]]=1; } /*for(int i=1;i<=n;i++) { printf("%d ",hsh[i]); } printf("\n");*/ if(num>root) { for(int i=1;i<=n;i++) { dp[i]=-1e9; if(hsh[i]==0)dp[i]=0; for(auto node:from[i]) { dp[i]=max(dp[i],dp[node]+1); } } if(dp[party]<0) { printf("-1\n"); }else { printf("%d\n",dp[party]); } }else { ans=-1e9; for(int i=0;i<best[party].size();i++) { if(hsh[best[party][i].Y]==0) { ans=max(ans,best[party][i].X); } } /*for(int i=0;i<best[party].size();i++) { printf("%d %d\n",best[party][i].X,best[party][i].Y); }*/ if(ans==-1e9) { printf("-1\n"); }else { printf("%d\n",ans); } } for(int i=1;i<=num;i++) { hsh[ban[i]]=0; } } }

컴파일 시 표준 에러 (stderr) 메시지

bitaro.cpp: In function 'std::vector<std::pair<int, int> > merge(std::vector<std::pair<int, int> >, std::vector<std::pair<int, int> >)':
bitaro.cpp:44:20: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   44 |         if(v.size()==root)break;
      |            ~~~~~~~~^~~~~~
bitaro.cpp:45:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |         if(it1==v1.size()&&it2==v2.size())break;
      |            ~~~^~~~~~~~~~~
bitaro.cpp:45:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |         if(it1==v1.size()&&it2==v2.size())break;
      |                            ~~~^~~~~~~~~~~
bitaro.cpp:46:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |         if(it1==v1.size())
      |            ~~~^~~~~~~~~~~
bitaro.cpp:54:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |         }else if(it2==v2.size())
      |                  ~~~^~~~~~~~~~~
bitaro.cpp:84:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |     for(int i=0;i<v1.size();i++)hsh2[v1[i].Y]=0;
      |                 ~^~~~~~~~~~
bitaro.cpp:85:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   85 |     for(int i=0;i<v2.size();i++)hsh2[v2[i].Y]=0;
      |                 ~^~~~~~~~~~
bitaro.cpp: In function 'int main()':
bitaro.cpp:173:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  173 |             for(int i=0;i<best[party].size();i++)
      |                         ~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...