結果
問題 | No.241 出席番号(1) |
ユーザー | nola_suz |
提出日時 | 2015-07-13 14:08:35 |
言語 | C++11 (gcc 11.4.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 3,998 bytes |
コンパイル時間 | 686 ms |
コンパイル使用メモリ | 94,460 KB |
最終ジャッジ日時 | 2024-05-08 00:14:11 |
合計ジャッジ時間 | 1,011 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp: In member function ‘V MaxFlow_dinic<V>::maxflow(int, int)’: main.cpp:142:35: error: ‘numeric_limits’ was not declared in this scope 142 | while((tf=dfs(from,to,numeric_limits<V>::max()))>0) fl+=tf; | ^~~~~~~~~~~~~~ main.cpp:142:51: error: expected primary-expression before ‘>’ token 142 | while((tf=dfs(from,to,numeric_limits<V>::max()))>0) fl+=tf; | ^ main.cpp:142:57: error: no matching function for call to ‘max()’ 142 | while((tf=dfs(from,to,numeric_limits<V>::max()))>0) fl+=tf; | ~~~~~^~ In file included from /usr/include/c++/11/bits/stl_tree.h:63, from /usr/include/c++/11/map:60, from main.cpp:5: /usr/include/c++/11/bits/stl_algobase.h:254:5: note: candidate: ‘template<class _Tp> const _Tp& std::max(const _Tp&, const _Tp&)’ 254 | max(const _Tp& __a, const _Tp& __b) | ^~~ /usr/include/c++/11/bits/stl_algobase.h:254:5: note: template argument deduction/substitution failed: main.cpp:142:57: note: candidate expects 2 arguments, 0 provided 142 | while((tf=dfs(from,to,numeric_limits<V>::max()))>0) fl+=tf; | ~~~~~^~ In file included from /usr/include/c++/11/bits/stl_tree.h:63, from /usr/include/c++/11/map:60, from main.cpp:5: /usr/include/c++/11/bits/stl_algobase.h:300:5: note: candidate: ‘template<class _Tp, class _Compare> const _Tp& std::max(const _Tp&, const _Tp&, _Compare)’ 300 | max(const _Tp& __a, const _Tp& __b, _Compare __comp) | ^~~ /usr/include/c++/11/bits/stl_algobase.h:300:5: note: template argument deduction/substitution failed: main.cpp:142:57: note: candidate expects 3 arguments, 0 provided 142 | while((tf=dfs(from,to,numeric_limits<V>::max
ソースコード
#include <cstdlib> #include <cmath> #include <climits> #include <cfloat> #include <map> #include <set> #include <iostream> #include <string> #include <vector> #include <algorithm> #include <sstream> #include <complex> #include <stack> #include <queue> #include <cstdio> #include <cstring> #include <iterator> #include <bitset> #include <unordered_set> #include <unordered_map> #include <fstream> #include <iomanip> //#include <utility> //#include <memory> //#include <functional> //#include <deque> //#include <cctype> //#include <ctime> //#include <numeric> //#include <list> //#include <iomanip> //#if __cplusplus >= 201103L //#include <array> //#include <tuple> //#include <initializer_list> //#include <forward_list> // //#define cauto const auto& //#else //#endif using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef vector<int> vint; typedef vector<vector<int> > vvint; typedef vector<long long> vll, vLL; typedef vector<vector<long long> > vvll, vvLL; #define VV(T) vector<vector< T > > template <class T> void initvv(vector<vector<T> > &v, int a, int b, const T &t = T()){ v.assign(a, vector<T>(b, t)); } template <class F, class T> void convert(const F &f, T &t){ stringstream ss; ss << f; ss >> t; } #undef _P #define _P(...) (void)printf(__VA_ARGS__) #define reep(i,a,b) for(int i=(a);i<(b);++i) #define rep(i,n) reep((i),0,(n)) #define ALL(v) (v).begin(),(v).end() #define PB push_back #define F first #define S second #define mkp make_pair #define RALL(v) (v).rbegin(),(v).rend() #define DEBUG #ifdef DEBUG #define dump(x) cout << #x << " = " << (x) << endl; #define debug(x) cout << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << endl; #else #define dump(x) #define debug(x) #endif #define LDcout(x,n) fixed<<setprecision(n)<<x #define MOD 1000000007LL #define EPS 1e-8 static const int INF=1<<24; //max flow (dinic) template<class V> class MaxFlow_dinic{ public: struct edge{int to,reve;V cap;}; static const int MV = 1100; vector<edge> E[MV]; int itr[MV],lev[MV]; void add_edge(int x,int y,V cap,bool undir=false){ E[x].push_back((edge){y,(int)E[y].size(),cap}); E[y].push_back((edge){x,(int)E[x].size()-1,undir?cap:0}); } void bfs(int cur){ memset(lev,0xff,sizeof(lev)); queue<int> q; lev[cur]=0; q.push(cur); while(q.size()){ int v=q.front(); q.pop(); for(__typeof(E[v].begin()) e=E[v].begin();e!=E[v].end();e++) if(e->cap>0&&lev[e->to]<0) lev[e->to]=lev[v]+1,q.push(e->to); } } V dfs(int from,int to,V cf){ if(from==to){ return cf; } for(;itr[from]<E[from].size();itr[from]++){ edge* e=&E[from][itr[from]]; if(e->cap>0&&lev[from]<lev[e->to]){ V f=dfs(e->to,to,min(cf,e->cap)); if(f>0){ e->cap-=f; E[e->to][e->reve].cap += f; return f; } } } return 0; } V maxflow(int from,int to){ V fl=0,tf; while(1){ bfs(from); if(lev[to]<0) return fl; memset(itr,0,sizeof(itr)); while((tf=dfs(from,to,numeric_limits<V>::max()))>0) fl+=tf; } } }; void mainmain(){ int n; cin>>n; vint v(n); rep(i,n) cin>>v[i]; MaxFlow_dinic<int> mf; int start = 200; int goal = 201; rep(i,n){ mf.add_edge(start,i,1); mf.add_edge(i+n,goal,1); } rep(i,n){ rep(j,n){ if(v[i]==j) continue; mf.add_edge(i,j+n,1); } } int t=mf.maxflow(start,goal); // cout<<t<<endl; if(t!=n){ cout<<-1<<endl; } else{ vint ans(n); rep(i,n){ for(auto j:mf.E[i]){ if(j.cap==0){ ans[i]=j.to-n; break; } } } rep(i,n){ cout<<ans[i]<<endl; } } } signed main() { ios_base::sync_with_stdio(false); cout<<fixed<<setprecision(0); mainmain(); }