제출 #261746

#제출 시각아이디문제언어결과실행 시간메모리
261746tqbfjotldColors (RMI18_colors)C++14
0 / 100
3091 ms4756 KiB
#include <bits/stdc++.h> using namespace std; int init[150005]; int fin[150005]; vector<int> adjl[150005]; vector<pair<int,int> > order; queue<pair<int,int> > q; bool visited[150005]; int counter = 0; bool dfs(int node, int findcol, int finx){ if (init[node]==findcol) return true; visited[node] = true; counter++; //assert(counter<=5000000); for (auto x : adjl[node]){ if (init[x]<finx || fin[x]>finx) continue; if (!visited[x]){ if (dfs(x,findcol,finx)) { init[node] = finx; return true; } } } return false; } void dfs2(int node){ for (auto x : adjl[node]){ if (init[x]<=init[node] || fin[x]>init[node]){ continue; } init[x] = init[node]; dfs2(x); } } int counter2 = 0; int main(){ int test; scanf("%d",&test); while (test--){ int n,m; scanf("%d%d",&n,&m); counter2 += n*n; assert(counter2<=5000000); for (int x = 1; x<=n; x++){ scanf("%d",&init[x]); adjl[x].clear(); } bool poss1 = true; for (int x = 1; x<=n; x++){ scanf("%d",&fin[x]); if (fin[x]>init[x]) poss1 = false; order.push_back({init[x],x}); } sort(order.begin(),order.end(),greater<pair<int,int> >()); for (int x = 0; x<m; x++){ int a,b; scanf("%d%d",&a,&b); adjl[a].push_back(b); adjl[b].push_back(a); } if (!poss1) { printf("0\n"); continue; } bool poss = true; /*for (auto x : order){ for (int x = 1; x<=n; x++) visited[x] = false; if (!dfs(x.second,fin[x.second],fin[x.second])){ printf("0\n"); poss = false; break; } }*/ for (auto x : order){ dfs2(x.second); } for (int x = 1; x<=n; x++){ if (init[x]!=fin[x]){ poss = false; printf("0\n"); break; } } if (poss){ printf("1\n"); } } }

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

colors.cpp: In function 'int main()':
colors.cpp:41:6: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
 scanf("%d",&test);
 ~~~~~^~~~~~~~~~~~
colors.cpp:44:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&m);
     ~~~~~^~~~~~~~~~~~~~
colors.cpp:48:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&init[x]);
         ~~~~~^~~~~~~~~~~~~~~
colors.cpp:53:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&fin[x]);
         ~~~~~^~~~~~~~~~~~~~
colors.cpp:60:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&a,&b);
         ~~~~~^~~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...