Submission #1304822

#TimeUsernameProblemLanguageResultExecution timeMemory
1304822yusifmShell (info1cup18_shell)C++20
0 / 100
1095 ms568 KiB
#pragma GCC optimize("O3") #include <bits/stdc++.h> #define ll long long #define str string #define pb push_back #define pf push_front #define in insert #define all(v) v.begin(),v.end() const int sz=200001,INF=1000000000; using namespace std; ll n,m,l,num,num1,num2,Res,ans=0; bool flag; vector<ll>Nums; vector<bool>isSeen(sz); vector<pair<ll,ll>>nums; vector<vector<ll>>res; set<ll>nodes; void bfs(ll num) { queue<ll>numS; numS.push(num); isSeen[num]=true; while(numS.size()!=0) { Res=numS.front(); numS.pop(); for(int i=0;i<res[Res].size();i++) { if(!isSeen[res[Res][i]]) { numS.push(res[Res][i]); isSeen[res[Res][i]]=true; } } } } void solve() { cin>>n>>m>>l; for(int i=0;i<l;i++) { cin>>num; Nums.pb(num); } for(int i=0;i<m;i++) { cin>>num1>>num2; nums.pb({num1,num2}); } for(int i=1;i<pow(2,m);i++) { flag=false,res.clear(),res.resize(n+1),fill(all(isSeen),false),nodes.clear(); for(int j=0;j<m;j++) { if(i&(ll)pow(2,j)) { res[nums[j].first].pb(nums[j].second),nodes.in(nums[j].first),nodes.in(nums[j].second); } } if(res[1].size()!=0) { bfs(1); for(int i=1;i<=n;i++) { if(res[i].size()>=2) { flag=true; break; } } for(auto node:nodes) { if(!isSeen[node]) { flag=true; break; } } if(!flag) { ans++; } } } cout<<ans; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr),cout.tie(nullptr); ll t=1; //cin>>t; while(t--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...