結果
問題 | No.807 umg tours |
ユーザー | wakannyaai |
提出日時 | 2020-02-05 00:02:11 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
MLE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 8,498 bytes |
コンパイル時間 | 2,237 ms |
コンパイル使用メモリ | 189,052 KB |
実行使用メモリ | 818,004 KB |
最終ジャッジ日時 | 2024-05-03 00:10:38 |
合計ジャッジ時間 | 13,960 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,376 KB |
testcase_02 | AC | 2 ms
5,376 KB |
testcase_03 | AC | 3 ms
5,376 KB |
testcase_04 | AC | 2 ms
5,376 KB |
testcase_05 | AC | 3 ms
5,376 KB |
testcase_06 | AC | 2 ms
5,376 KB |
testcase_07 | AC | 3 ms
5,376 KB |
testcase_08 | AC | 2 ms
5,376 KB |
testcase_09 | AC | 2 ms
5,376 KB |
testcase_10 | AC | 2 ms
5,376 KB |
testcase_11 | AC | 404 ms
23,536 KB |
testcase_12 | AC | 331 ms
19,968 KB |
testcase_13 | AC | 444 ms
24,380 KB |
testcase_14 | AC | 174 ms
13,628 KB |
testcase_15 | AC | 152 ms
11,040 KB |
testcase_16 | AC | 524 ms
25,500 KB |
testcase_17 | AC | 602 ms
29,024 KB |
testcase_18 | AC | 859 ms
32,500 KB |
testcase_19 | AC | 669 ms
30,596 KB |
testcase_20 | AC | 279 ms
17,468 KB |
testcase_21 | AC | 295 ms
17,944 KB |
testcase_22 | AC | 120 ms
9,728 KB |
testcase_23 | AC | 93 ms
9,204 KB |
testcase_24 | MLE | - |
testcase_25 | -- | - |
ソースコード
/*やったぜ。 投稿者:変態糞土方 (8月16日(水)07時14分22秒) 昨日の8月15日にいつもの浮浪者のおっさん(60歳)と先日メールくれた汚れ好きの土方のにいちゃん (45歳)とわし(53歳)の3人で県北にある川の土手の下で盛りあったぜ。 今日は明日が休みなんでコンビニで酒とつまみを買ってから滅多に人が来ない所なんで、 そこでしこたま酒を飲んでからやりはじめたんや。 3人でちんぽ舐めあいながら地下足袋だけになり持って来たいちぢく浣腸を3本ずつ入れあった。 しばらくしたら、けつの穴がひくひくして来るし、糞が出口を求めて腹の中でぐるぐるしている。 浮浪者のおっさんにけつの穴をなめさせながら、兄ちゃんのけつの穴を舐めてたら、 先に兄ちゃんがわしの口に糞をドバーっと出して来た。 それと同時におっさんもわしも糞を出したんや。もう顔中、糞まみれや、 3人で出した糞を手で掬いながらお互いの体にぬりあったり、 糞まみれのちんぽを舐めあって小便で浣腸したりした。ああ~~たまらねえぜ。 しばらくやりまくってから又浣腸をしあうともう気が狂う程気持ちええんじゃ。 浮浪者のおっさんのけつの穴にわしのちんぽを突うずるっ込んでやると けつの穴が糞と小便でずるずるして気持ちが良い。 にいちゃんもおっさんの口にちんぽ突っ込んで腰をつかって居る。 糞まみれのおっさんのちんぽを掻きながら、思い切り射精したんや。 それからは、もうめちゃくちゃにおっさんと兄ちゃんの糞ちんぽを舐めあい、 糞を塗りあい、二回も男汁を出した。もう一度やりたいぜ。 やはり大勢で糞まみれになると最高やで。こんな、変態親父と糞あそびしないか。 ああ~~早く糞まみれになろうぜ。 岡山の県北であえる奴なら最高や。わしは163*90*53,おっさんは165*75*60、や 糞まみれでやりたいやつ、至急、メールくれや。 土方姿のまま浣腸して、糞だらけでやろうや。*/ #include "bits/stdc++.h" #include <unordered_set> #include <numeric> #define rep(i,n) for(int i = 0; i < n; i++) typedef long long ll; typedef unsigned long long ull; using namespace std; #define vll vector<vector<long long>> #define vl vector<long long> #define vi vector<int> #define vii vector<vector<int>> #define pb push_back #define pf push_front #define ld long double #define Sort(a) sort(a.begin(),a.end()) #define cSort(a,cmp) sort(a.begin(),a.end(),cmp) #define reSort(a) sort(a.rbegin(), a.rend()) static const ll llMAX = numeric_limits<long long>::max(); static const int intMAX = numeric_limits<int>::max(); static const ll llMIN = numeric_limits<long long>::min(); static const int intMIN = numeric_limits<int>::min(); static const ll d_5 = 100000; static const ll d9_7 = 1000000007; static const ll d_9 = 1000000000; static const double PI=3.14159265358979323846; //<<std::setprecision(30) template<class T> void Printvector(std::vector<T> a){ int size = a.size(); rep(i,size){ cout<<a[i]<<" "; } cout<<endl; } template<class T> void Printvector(std::vector<std::vector<T>> a){ int size = a.size(); rep(i,size){ int size2=a[i].size(); rep(j,size2){ cout<<a[i][j]<<" "; } cout<<endl; } cout<<endl; } template<class T> T digitpower(T a,T b){//aのb乗を計算 int mode=1;//0が、modを取る if(b==1){ return a; }else if(b==0){ return 1; } if(b%2==1){ T tmp = digitpower(a,(b-1)/2); if(mode==0){ tmp%=d9_7; } tmp*=tmp; if(mode==0){ tmp%=d9_7; } tmp*=a; if(mode==0){ return (tmp)%d9_7; }else{ return tmp; } }else{ T tmp = digitpower(a,(b)/2); if(mode==0){ tmp%=d9_7; } tmp*=tmp; if(mode==0){ tmp%=d9_7; } if(mode==0){ return (tmp)%d9_7; }else{ return tmp; } } } unordered_map<ll,ll> prime_factor(int64_t n) { unordered_map<ll,ll> ret; for(int64_t i = 2; i * i <= n; i++) { while(n % i == 0) { ret[i]++; n /= i; } } if(n != 1) ret[n] = 1; return ret; } template<class T> vector<T> getaccum(vector<T> a,int mode){//modを取るか取らないかに注意 int size=a.size(); vector<T> ans(size); ans[0]=a[0]; for(int i=0;i<size-1;i++){ ans[i+1]=ans[i]+a[i+1]; if(mode==0){ ans[i+1]%=d9_7; } } return ans; } //グラフ struct edge{ int to; ll length; int num; int pair; }; struct treev{ int num; vector<int> nexts; }; vector<treev> vs; vector<edge> es; int cmax=0; void createtreenode(int num){//引数は頂点の数 vs=vector<treev>(num); /*treev* newt; try{ treev* newt=new treev; } catch (std::bad_alloc&) { // メモリ確保に失敗 // エラー処理 }*/ rep(i,num){ vs[i].num=i; } return ; } void insertree_bidire(ll len,int Va,int Vb,int num){//結ぶ頂点を //双方向 es.pb({Va,len,num,-1}); es.pb({Vb,len,num,-1}); int size=es.size(); es[size-1].pair=size-2; es[size-2].pair=size-1; vs[Va].nexts.push_back(size-1); vs[Vb].nexts.push_back(size-2); return; } void insertree_unidire(ll len,int Va,int Vb,int num){//結ぶ頂点を //単方向,aからbへ es.pb({Vb,len,num,-1}); int size=es.size(); es[size-1].pair=-1; vs[Va].nexts.push_back(size-1); return; } void DFS(int root,ll depth,int pre, int precol){ //ここにやりたい処理を書く int ncnt=0; for(auto i:vs[root].nexts){ if(pre==es[i].to){ continue; } DFS(es[i].to,depth+es[i].length,root,ncnt); } return; } struct operatedata{ int num; int prenum; ll depth; }; deque<operatedata> opera; vi past; int tmpdepthmax=0; int ngflag; void BFS(int ini){ opera.clear(); opera.pb({ini,-1,0}); int pre=-1; while(opera.size()!=0 &&ngflag==0){ int root=opera.front().num; int pre=opera.front().prenum; ll depth=opera.front().depth; opera.pop_front(); //ここにやりたい処理を書く for(int i:vs[root].nexts){ if(es[i].to==pre){ continue; } opera.push_back({es[i].to,root,depth+es[i].length}); } } return; } vl fordiikstra; vl useddiikstra; void Dijkstra(int ini){ fordiikstra=vl(vs.size(),-1); opera.clear(); opera.pb({ini,-1,0}); int pre=-1; while(opera.size()!=0 &&ngflag==0){ int root=opera.front().num; int pre=opera.front().prenum; ll depth=opera.front().depth; opera.pop_front(); if(fordiikstra[root]<depth && fordiikstra[root]!=-1)continue;//なんかもうもっとましなパターンがやられてた fordiikstra[root]=depth; //ここにやりたい処理を書く for(int i:vs[root].nexts){ if(es[i].to==pre){ continue; } if(fordiikstra[es[i].to]<depth+es[i].length && fordiikstra[es[i].to]!=-1){ //もうすでに大きかった場合 continue; } opera.push_back({es[i].to,root,depth+es[i].length}); } } return; } void Dijkstra2(int ini){ opera.clear(); opera.pb({ini,-1,0}); int pre=-1; while(opera.size()!=0 &&ngflag==0){ int root=opera.front().num; int pre=opera.front().prenum; ll depth=opera.front().depth; opera.pop_front(); if(useddiikstra[root]<depth)continue;//なんかもうもっとましなパターンがやられてた useddiikstra[root]=depth; //ここにやりたい処理を書く for(int i:vs[root].nexts){ if(es[i].to==pre){ continue; } ll nextscore=min(useddiikstra[root]+es[i].length,fordiikstra[root]/*ここが、チケット使うところ*/); if(useddiikstra[es[i].to]<nextscore){ //もうすでに大きかった場合 continue; } opera.push_back({es[i].to,root,nextscore}); } } return; } int main(void){ ll n,m; cin>>n>>m; vl a(m),b(m),c(m); createtreenode(n); rep(i,m){ cin>>a[i]>>b[i]>>c[i]; a[i]--; b[i]--; insertree_bidire(c[i],a[i],b[i],i); } Dijkstra(0);//まあまずは //Printvector(fordiikstra); useddiikstra=fordiikstra; Dijkstra2(0); //Printvector(useddiikstra); rep(i,n){ cout<<fordiikstra[i]+useddiikstra[i]<<endl; } return 0; }